Avatar billede den-evil Nybegynder
03. april 2008 - 12:42 Der er 21 kommentarer

Opdel efter alfabetisk rækkefølge

JEg har en søgning der udskriver navne på medarbejdere:

Navn Stilling Telefon Email
Camilla Kibernich () udvikler 88888888  caki@fredensborg.dk
Nichlas Rasmussen () designer 86888888  nira@fredensborg.dk

-----------------------------------------------------------

Jeg vil gerne have det skal se sådan ud:

C
Navn Stilling Telefon Email
Camilla Kibernich () udvikler 88888888  caki@fredensborg.dk

N
Navn Stilling Telefon Email
Nichlas Rasmussen () designer 86888888  nira@fredensborg.dk

-------------------

Altså den laver en slags tabel for hvert navn....

    <xsl:template match="Users">
        <xsl:choose>
            <xsl:when test="@IsUserForm = 'False' and @IsSearchResult = 'False'">
                <xsl:call-template name="searchUserForm"/>
            </xsl:when>
        </xsl:choose>
        <xsl:choose>
            <xsl:when test="@IsSearchResult = 'True'">
                <div class="searchResults">
                    <h1>Medarbejdere</h1>
                    <p>
                        <b>
                            Søgeresultat for "<xsl:value-of disable-output-escaping="yes" select="./FormData/userSearchString/HtmlSearchString"/>":
                        </b>
                    </p>
                </div>
                <div class="sResults">
                    <table width="100%" cellpadding="0" cellspacing="3" id="members">
                        <tr>
                            <th class="name">Navn</th>
                            <th class="title">Stilling</th>
                            <th class="phone">Telefon</th>
                            <th class="email">Email</th>
                        </tr>
                        <xsl:apply-templates select="User" mode="result"/>
                    </table>
                    <br/>
                    <xsl:apply-templates select="@Pages"/>
                </div>
            </xsl:when>
            <xsl:otherwise>
                <xsl:choose>
                    <xsl:when test="@AllowEdit = 'True' and @Mode = 'Edit'">
                        <xsl:apply-templates select="User" mode="input"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="User" mode="text"/>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>

    <xsl:template name="searchUserForm">
        <h1>Medarbejdere</h1>
        <p>Her kan du søge efter medarbejdere. Du kan begrænse din søgning til medarbejdere i en bestemt del af organisationen eller med en bestemt stillingsbetegnelse (eller begge)</p>
        <div id="searchMedarbejder">
            <form method="post" name="userSearchForm" action="" class="medarbejder">
                Navn eller telefonummer (eller dele deraf)
                <br />
                <input type="hidden" name="userSearchButton" value="Søg"/>
                <input>
                    <xsl:attribute name="type">text</xsl:attribute>
                    <xsl:attribute name="name">userSearchString</xsl:attribute>
                    <xsl:attribute name="value"><xsl:value-of select="./FormData/userSearchString/SearchString"/></xsl:attribute>
                    <xsl:attribute name="onclick">this.value='';</xsl:attribute>
                </input>
                <input type="Submit" class="cImgButton2" value="Søg"/>
            </form>
        </div>
    </xsl:template>
   
    <xsl:template match="User" mode="result">
        <tr>
            <td class="nameresult">
                <a href="?userId={Id}">
                    <xsl:value-of select="Fornavn"/>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="Efternavn"/> (<xsl:value-of select="Kaldenavn"/>)
                </a>
            </td>
            <td class="titleresult">
                <xsl:value-of select="Stilling"/>
            </td>
            <td class="phoneresult">
                <xsl:value-of select="Arbejdstelefon"/>
            </td>
            <td class="emailresult">
                <a href="mailto:{Arbejdsemail}">
                    <xsl:value-of select="Arbejdsemail"/>
                </a>
            </td>
        </tr>
    </xsl:template>
Avatar billede den-evil Nybegynder
03. april 2008 - 13:20 #1
Og hvis der selvfølgelig er flere der starter med fx C, så skal den bare liste navne under Camilla fx...

Det er vel et eller andet med jeg skal ind og checke på første bogstav for hvert navn, og hvis det første bogstav ikke er det samme, skal den oprette en ny række til det pågældende bostav sådan her:
N
Navn Stilling Telefon Email
Nichlas Rasmussen () designer 86888888  nira@fredensborg.dk

M
Navn Stilling Telefon Email
Michael Rasmussen () designer 86888888  nira@fredensborg.dk
Martin Jespersen () designer 86888888  nira@fredensborg.dk


og hvis det er det samme, så skal den bare udskrive:

N
Navn Stilling Telefon Email
Nichlas Rasmussen () designer 86888888  nira@fredensborg.dk
Niels Eriksen () designer 86888888  nira@fredensborg.dk
Nalle Nuk () designer 86888888  nira@fredensborg.dk

------------------

Er dog bare lidt i tvivl om hvordan det lige laves i XSLT ?
Avatar billede jokkejensen Novice
03. april 2008 - 17:16 #2
Du kan kun gøre det ved at hente for hvert bogstav. Der er ingen grupperings muligheder.

Når det er sagt er det ikke så skide svært.

Opret en variable ala:

<xsl:variable name="alphabet">
<root>
        <node>A</node>
        <node>B</node>
        <node>C</node>
        <node>D</node>
        <node>E</node>
        <node>F</node>
        <node>G</node>
        <node>H</node>
        <node>I</node>
        <node>J</node>
        <node>K</node>
        <node>L</node>
        <node>M</node>
        <node>N</node>
        <node>O</node>
        <node>P</node>
        <node>Q</node>
        <node>R</node>
        <node>S</node>
        <node>T</node>
        <node>U</node>
        <node>V</node>
        <node>W</node>
        <node>X</node>
        <node>Y</node>
        <node>Z</node>
</root>
</xsl:variable>

i psuedo, hvor du lister dem.

  <div class="sResults">
                    <table width="100%" cellpadding="0" cellspacing="3" id="members">
                        <tr>
                            <th class="name">Navn</th>
                            <th class="title">Stilling</th>
                            <th class="phone">Telefon</th>
                            <th class="email">Email</th>
                        </tr>
<xsl:foreach select="$alphabet/node">
<!-- Udskriv begyndelses bogstav hvis der findes nogen -->
<xsl:if test="substring(User//Fornavn, 1) = text()"> <!-- Test om der er nogle brugere med begyndelses bogstav fra $alphabet/node -->
<xsl:value-of select="." />
</xsl:if>

<!-- List svinene -->
<xsl:apply-templates select="User[substring(fornavn,1) = .]" mode="result"/>

</xsl:foreach>
                    </table>
                    <br/>
                    <xsl:apply-templates select="@Pages"/>
                </div>

Det er utestet, men du bør kunne se ideen.

/JJ
Avatar billede den-evil Nybegynder
04. april 2008 - 09:28 #3
Hmm, mjaeh, men en foreach kan ikke være et child element til en table?

Derudover, så ser det ud som som at når du kalder: <xsl:apply-templates select="User[substring(fornavn,1) = .]" mode="result"/>

Så vil den vel udskriver alle mine kolonner med kun forbugstav?
Avatar billede jokkejensen Novice
04. april 2008 - 09:36 #4
Jeg løber jo alle bogstaver igennem..

og hver gang tjekker jeg op om der findes nogle med drevbogstav X, hvis der gør, så udskriv X, og find brugerne
Avatar billede den-evil Nybegynder
04. april 2008 - 10:30 #5
Ahh ok...
Men kan stadig ikke have en foreach i en table, eller div...

Kan man evt lave en template til den, sådan her evt:
    <xsl:template match="User" name="LoopUsers">
       
        <xsl:variable name="alphabet">
            <letters>
                <node>A</node>
                <node>B</node>
                <node>C</node>
                <node>D</node>
                <node>E</node>
                <node>F</node>
                <node>G</node>
                <node>H</node>
                <node>I</node>
                <node>J</node>
                <node>K</node>
                <node>L</node>
                <node>M</node>
                <node>N</node>
                <node>O</node>
                <node>P</node>
                <node>Q</node>
                <node>R</node>
                <node>S</node>
                <node>T</node>
                <node>U</node>
                <node>V</node>
                <node>W</node>
                <node>X</node>
                <node>Y</node>
                <node>Z</node>
                <node>Æ</node>
                <node>Ø</node>
                <node>Å</node>
            </letters>
        </xsl:variable>
       
        <xsl:foreach select="$alphabet/letters">
            <!-- Udskriv begyndelses bogstav hvis der findes nogen -->
            <xsl:if test="substring(User//Fornavn, 1) = text()">
                <!-- Test om der er nogle brugere med begyndelses bogstav fra $alphabet/node -->
                <xsl:value-of select="."/>
            </xsl:if>
            <!-- List dem -->
            <xsl:apply-templates select="User[substring(Fornavn,1) = .]" mode="result"/>
        </xsl:foreach>
    </xsl:template> 

------------------------

Også kalde templaten?
Avatar billede jokkejensen Novice
04. april 2008 - 10:56 #6
Jo du kan have den hvor som helst, har du mulighed for at paste hele xslt filen, så kan jeg se hvad der går galt ? - det er sikkert bare en lille markup fejl.

Se xslt som et xml sprog der kan transformere xml, der er ingen begrænsninger i outputtet, og xslt kan nestes i alle andre xml tags, som table og div.

/JJ
Avatar billede jokkejensen Novice
04. april 2008 - 10:58 #7
Men ovenstående vil også fungere..

Som du selv viser løsningen, er det at for hvert bogstav slå op om der eksisterer en bruger...

Hvis du har et ordentligt user udtræk der må posts offentligt, kan jeg bedre give den bedste løsning.
Avatar billede den-evil Nybegynder
04. april 2008 - 11:08 #8
Hele XSLT filen ser sådan ud nu:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
    <xsl:template match="/">
        <xsl:apply-templates select="Users"/>
    </xsl:template>
    <xsl:template match="Users">
        <xsl:choose>
            <xsl:when test="@IsUserForm = 'False' and @IsSearchResult = 'False'">
                <xsl:call-template name="searchUserForm"/>
            </xsl:when>
        </xsl:choose>
        <xsl:choose>
            <xsl:when test="@IsSearchResult = 'True'">
                <div class="searchResults">
                    <h1>Medarbejdere</h1>
                    <p>
                        <b>
                            Søgeresultat for "<xsl:value-of disable-output-escaping="yes" select="./FormData/userSearchString/HtmlSearchString"/>":
                        </b>
                    </p>
                </div>
                <div class="sResults">
                    <table width="100%" cellpadding="0" cellspacing="3" id="members">
                        <tr>
                            <th class="name">Navn</th>
                            <th class="title">Stilling</th>
                            <th class="phone">Telefon</th>
                            <th class="email">Email</th>
                        </tr>
                    <xsl:apply-templates select="User" mode="LoopUsers" />   
                    </table>
                    <br/>
                    <xsl:apply-templates select="@Pages"/>
                </div>
            </xsl:when>
            <xsl:otherwise>
                <xsl:choose>
                    <xsl:when test="@AllowEdit = 'True' and @Mode = 'Edit'">
                        <xsl:apply-templates select="User" mode="input"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="User" mode="text"/>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
   
    <xsl:template name="searchUserForm">
        <h1>Medarbejdere</h1>
        <p>Her kan du søge efter medarbejdere. Du kan begrænse din søgning til medarbejdere i en bestemt del af organisationen eller med en bestemt stillingsbetegnelse (eller begge)</p>
        <div id="searchMedarbejder">
            <form method="post" name="userSearchForm" action="" class="medarbejder">
                Navn eller telefonummer (eller dele deraf)
                <br/>
                <input type="hidden" name="userSearchButton" value="Søg"/>
                <input>
                    <xsl:attribute name="type">text</xsl:attribute>
                    <xsl:attribute name="name">userSearchString</xsl:attribute>
                    <xsl:attribute name="value"><xsl:value-of select="./FormData/userSearchString/SearchString"/></xsl:attribute>
                    <xsl:attribute name="onclick">this.value='';</xsl:attribute>
                </input>
                <input type="Submit" class="cImgButton2" value="Søg"/>
            </form>
        </div>
    </xsl:template>
   
    <xsl:template match="User" mode="LoopUsers">
       
        <xsl:variable name="alphabet">
            <letters>
                <node>A</node>
                <node>B</node>
                <node>C</node>
                <node>D</node>
                <node>E</node>
                <node>F</node>
                <node>G</node>
                <node>H</node>
                <node>I</node>
                <node>J</node>
                <node>K</node>
                <node>L</node>
                <node>M</node>
                <node>N</node>
                <node>O</node>
                <node>P</node>
                <node>Q</node>
                <node>R</node>
                <node>S</node>
                <node>T</node>
                <node>U</node>
                <node>V</node>
                <node>W</node>
                <node>X</node>
                <node>Y</node>
                <node>Z</node>
                <node>Æ</node>
                <node>Ø</node>
                <node>Å</node>
            </letters>
        </xsl:variable>
       
        <xsl:foreach select="$alphabet/letters">
            <!-- Udskriv begyndelses bogstav hvis der findes nogen -->
            <xsl:if test="substring(User//Fornavn, 1) = text()">
                <!-- Test om der er nogle brugere med begyndelses bogstav fra $alphabet/node -->
                <xsl:value-of select="."/>
            </xsl:if>
            <!-- List dem -->
            <xsl:apply-templates select="User[substring(Fornavn,1) = .]" mode="result"/>
        </xsl:foreach>
    </xsl:template> 
   
    <xsl:template match="User" mode="result">
        <!--<xsl:variable name="Firstname" select="Fornavn"/>
        <xsl:variable name="FirstLetter" select="substring({$FirstName}, 1, 1)"/>-->
        <!--<xsl:choose>
            <xsl:when test="{$FirstLetter} == {$FirstLetter}">
                <tr>
                    <th class="name">Navn</th>
                    <th class="title">Stilling</th>
                    <th class="phone">Telefon</th>
                    <th class="email">Email</th>
                </tr>
            </xsl:when>
            <xsl:otherwise/>
        </xsl:choose>-->
        <tr>
            <td class="nameresult">
                <a href="?userId={Id}">
                    <xsl:value-of select="Fornavn"/>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="Efternavn"/> (<xsl:value-of select="Kaldenavn"/>)
                </a>
            </td>
            <td class="titleresult">
                <xsl:value-of select="Stilling"/>
            </td>
            <td class="phoneresult">
                <xsl:value-of select="Arbejdstelefon"/>
            </td>
            <td class="emailresult">
                <a href="mailto:{Arbejdsemail}">
                    <xsl:value-of select="Arbejdsemail"/>
                </a>
            </td>
        </tr>
    </xsl:template>
    <xsl:template match="User" mode="text">
        <h1>Medarbejderprofil: <xsl:value-of select="Fornavn"/>
            <xsl:text disable-output-escaping="yes"><![CDATA[&#32;]]></xsl:text>
            <xsl:value-of select="Efternavn"/>
        </h1>
        <table id="profile" cellpadding="0" cellspacing="3" borde="0">
            <tr>
                <td>&#160;</td>
                <td>&#160;</td>
            </tr>
            <tr>
                <td class="tdHeadlineBottomPad">Arbejdsinformation</td>
                <td>&#160;</td>
            </tr>
            <tr>
                <td class="subject">Kaldenavn:</td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Kaldenavn"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">Stilling: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Stilling"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">Afdeling: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Afdeling"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td>&#160;</td>
                <td>&#160;</td>
            </tr>
            <tr>
                <td>&#160;</td>
                <td>&#160;</td>
            </tr>
            <tr>
                <td class="subject">Funktioner: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Funktioner"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="headingArea">Område: </td>
                <td class="value">
                    <div class="personInfoArea">
                        <xsl:value-of select="Omraade"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">Adresse, arbejde: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Arbejdsadresse"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">Postnr. og by, arbejde: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Arbejdspostnr"/>
                        <xsl:text disable-output-escaping="yes"><![CDATA[&#32;]]></xsl:text>
                        <xsl:value-of select="Arbejdsby"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">E-mail, arbejde: </td>
                <td class="value">
                    <xsl:choose>
                        <xsl:when test="@EditMode='true'">
                            <input name="Email" value="{Arbejdsemail}" disabled="disabled" class="disabled"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <div class="personInfo">
                                <a href="mailto:{Arbejdsemail}">
                                    <xsl:value-of select="Arbejdsemail"/>
                                </a>
                            </div>
                        </xsl:otherwise>
                    </xsl:choose>
                </td>
            </tr>
            <tr>
                <td class="subject">Telefon, arbejde:</td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Arbejdstelefon"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">Mobil, arbejde: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Arbejdsmobil"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td>&#160;</td>
                <td>&#160;</td>
            </tr>
            <tr>
                <td class="tdHeadlineBottomPad">Privat Information</td>
                <td>&#160;</td>
            </tr>
            <tr>
                <td class="subject">Adresse, privat: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Privatadresse"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">Postnr. og by, privat: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Privatpostnr"/>
                        <xsl:text disable-output-escaping="yes"><![CDATA[&#32;]]></xsl:text>
                        <xsl:value-of select="Privatby"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">E-mail, privat: </td>
                <td class="value">
                    <xsl:choose>
                        <xsl:when test="@EditMode='true'">
                            <input name="Email" value="{Privatemail}" disabled="disabled" class="disabled"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <div class="personInfo">
                                <a href="mailto:{Privatemail}">
                                    <xsl:value-of select="Privatemail"/>
                                </a>
                            </div>
                        </xsl:otherwise>
                    </xsl:choose>
                </td>
            </tr>
            <tr>
                <td class="subject">Telefon, privat:</td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Privattelefon"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td class="subject">Mobil, privat: </td>
                <td class="value">
                    <div class="personInfo">
                        <xsl:value-of select="Privatmobil"/>
                    </div>
                </td>
            </tr>
            <tr>
                <td>&#160;</td>
                <td>&#160;</td>
            </tr>
            <tr>
                <td class="tdHeadlineBottomPad">Interesser</td>
                <td>&#160;</td>
            </tr>
            <tr>
                <td class="headingArea">Bemærkninger: </td>
                <td class="value">
                    <div class="personInfoArea">
                        <xsl:value-of select="Bemaerkninger"/>
                    </div>
                </td>
            </tr>
        </table>
        <xsl:if test="../@AllowEdit = 'True'">
            <div class="editProfile">
                <a href="?userId={Id}&amp;formMode=edit">
                    <img src="/files/Design/Elements/editProfile.gif" alt="Rediger din profil" width="80" height="20"/>
                </a>
            </div>
        </xsl:if>
        <!-- <xsl:apply-templates select="Calendar"/> -->
    </xsl:template>
    <xsl:template match="User" mode="input">
        <h1>Rediger medarbejderprofil</h1>
        <div class="editProfileDiv">
            <form method="post" name="userEditForm">
                <input type="hidden" id="moduleId" name="moduleId" value="{/Users/@ModuleId}"/>
                <input type="hidden" id="id" name="id" value="{Id}"/>
                <table id="profile" cellpadding="4" cellspacing="0" border="0">
                    <tr>
                        <td class="subject">Fornavn:</td>
                        <td class="value">
                            <input name="" value="{Fornavn}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Efternavn:</td>
                        <td class="value">
                            <input name="" value="{Efternavn}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Kaldenavn:</td>
                        <td class="value">
                            <input name="" value="{Kaldenavn}" class="enabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td>&#160;</td>
                        <td>&#160;</td>
                    </tr>
                    <tr>
                        <td class="tdHeadline">Arbejdsinformation</td>
                        <td>&#160;</td>
                    </tr>
                    <tr>
                        <td class="subject">Stilling: </td>
                        <td class="value">
                            <input name="titel" value="{Titel}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Afdeling: </td>
                        <td class="value">
                            <input name="" value="{Afdeling}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Funktioner: </td>
                        <td class="value">
                            <input name="funktioner" value="{Funktioner}" class="enabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="headingArea">Område: </td>
                        <td class="value">
                            <textarea name="omraade" rows="4" class="bordertextarea">
                                <xsl:value-of select="Omraade"/>­
                            </textarea>
                        </td>
                    </tr>
                    <tr>
                        <td>&#160;</td>
                        <td>&#160;</td>
                    </tr>
                    <tr>
                        <td class="tdHeadline">Privatinformation</td>
                        <td>&#160;</td>
                    </tr>
                    <tr>
                        <td class="subject">Adresse, arbejde: </td>
                        <td class="value">
                            <input name="" value="{Arbejdsadresse}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Postnr., arbejde: </td>
                        <td class="value">
                            <input name="" value="{Arbejdspostnr}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">By, arbejde: </td>
                        <td class="value">
                            <input name="" value="{Arbejdsby}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">E-mail, arbejde: </td>
                        <td class="value">
                            <input name="" value="{Arbejdsemail}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Telefon, arbejde:</td>
                        <td class="value">
                            <input name="" value="{Arbejdstelefon}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Mobil, arbejde:</td>
                        <td class="value">
                            <input name="" value="{Arbejdsmobil}" disabled="disabled" class="disabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Adresse, privat: </td>
                        <td class="value">
                            <input name="privatadresse" value="{Privatadresse}" class="enabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Postnr., privat: </td>
                        <td class="value">
                            <input name="privatpostnr" value="{Privatpostnr}" class="enabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">By, privat: </td>
                        <td class="value">
                            <input name="privatby" value="{Privatby}" class="enabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">E-mail, privat: </td>
                        <td class="value">
                            <input name="privatemail" value="{Privatemail}" class="enabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Telefon, privat:</td>
                        <td class="value">
                            <input name="privattelefon" value="{Privattelefon}" class="enabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td class="subject">Mobil, privat:</td>
                        <td class="value">
                            <input name="privatmobil" value="{Privatmobil}" class="enabled"/>
                        </td>
                    </tr>
                    <tr>
                        <td>&#160;</td>
                        <td>&#160;</td>
                    </tr>
                    <tr>
                        <td class="tdHeadline">Interesser</td>
                        <td>&#160;</td>
                    </tr>
                    <tr>
                        <td class="headingArea">Bemærkninger: </td>
                        <td class="value">
                            <textarea name="bemaerkninger" rows="4" class="bordertextarea">
                                <xsl:value-of select="Bemaerkninger"/>­
                            </textarea>
                        </td>
                    </tr>
                    <tr>
                        <td class="headingArea">Interessegrupper:</td>
                        <xsl:apply-templates select="Interestgroups"/>
                    </tr>
                </table>
                <div class="editProfile">
                    <input name="editUserButton" class="saveProfile" type="submit" value="Opdater"/> &#160;&#160;&#160;&#160;<input type="reset" name="reset" value="Annuller"/>
                </div>
            </form>
        </div>
    </xsl:template>
    <!-- USER VIEW BEGIN-->
    <xsl:template match="Interestgroups">
        <td class="value">
            <xsl:apply-templates select="Group"/>
        </td>
    </xsl:template>
    <xsl:template match="Group">
        <input type="checkbox" class="checkbox" name="interessegrupper" value="{@Id}">
            <xsl:if test="@Selected='true'">
                <xsl:attribute name="checked">checked</xsl:attribute>
            </xsl:if>
            <label class="checkBox">
                <xsl:value-of select="."/>
            </label>
            <br/>
        </input>
    </xsl:template>
    <xsl:template match="Calendar">
        <br/>
        <h1>Kalender</h1>
        <xsl:choose>
            <xsl:when test="count(Item) = 0">
                Der er ikke registreret møder eller aftaler for dagen i dag.
            </xsl:when>
            <xsl:otherwise>
                <table cellspacing="1" border="0" id="calender">
                    <tr>
                        <th class="start">Tidspunkt</th>
                        <th class="subject">Emne</th>
                        <th class="place">Sted</th>
                    </tr>
                    <xsl:apply-templates select="Item"/>
                </table>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <xsl:template match="Item">
        <xsl:if test="not(StartDate[@IsBeforeToday = 'True'] and StartTime = '00:00' and EndDate[@IsToday = 'True'] and EndTime = '00:00')">
            <!-- Vis ikke, heldagsaftale i går som ikke skal vises idag -->
            <tr>
                <td class="start">
                    <xsl:choose>
                        <xsl:when test="StartDate[@IsBeforeToday = 'True'] and EndDate[@IsToday = 'True']">
                            Indtil <xsl:value-of select="EndTime"/>
                        </xsl:when>
                        <xsl:when test="EndDate[@IsAfterToday = 'True'] and StartDate[@IsBeforeToday = 'True']">
                            Hele dagen
                        </xsl:when>
                        <xsl:when test="StartTime = '00:00' and StartDate[@IsToday = 'True'] and EndTime = '00:00' and EndDate[@IsAfterToday = 'True']">
                            Hele dagen
                        </xsl:when>
                        <xsl:when test="EndDate[@IsAfterToday = 'True'] and StartDate[@IsToday = 'True']">
                            Fra <xsl:value-of select="StartTime"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="StartTime"/> - <xsl:value-of select="EndTime"/>
                        </xsl:otherwise>
                        <!--xsl:when test="StartDate[@IsBeforeToday = 'True'] and EndDate[@IsToday = 'True']">
                            Indtil <xsl:value-of select="EndTime"/>
                        </xsl:when>
                        <xsl:when test="EndDate[@IsAfterToday = 'True'] and StartDate[@IsToday = 'True']">
                            Fra <xsl:value-of select="StartTime"/>
                        </xsl:when>
                        <xsl:when test="EndDate[@IsAfterToday = 'True'] and StartDate[@IsBeforeToday = 'True']">
                            Hele dagen
                        </xsl:when>
                        <xsl:when test="StartTime = '00:00' and EndTime = '00:00'">
                            Hele dagen
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="StartTime"/> - <xsl:value-of select="EndTime"/>
                        </xsl:otherwise-->
                    </xsl:choose>
                </td>
                <xsl:choose>
                    <xsl:when test="Sensitivity='2'">
                        <td class="subject" colspan="2">Privat aftale</td>
                    </xsl:when>
                    <xsl:otherwise>
                        <td class="subject">
                            <xsl:value-of select="Subject"/>
                        </td>
                        <td class="place">
                            <xsl:value-of select="Location"/>
                        </td>
                    </xsl:otherwise>
                </xsl:choose>
            </tr>
        </xsl:if>
    </xsl:template>
    <!-- USER VIEW END-->
    <!--****************** Paging *****************-->
    <msxsl:script language="C#" implements-prefix="user"><![CDATA[   
    public string addPaging(int curr,int max, string url, string search){
        int i = 1;
      string Output = "";
      string Url = url;
      string Search = search;
      while (i <= max) {
     
      if (i != curr)
        {
                Output += "<a href='" + Url + "?userSearchForm=go&pageNo=" + i + "&userSearchString=" + Search + "'>" + i + "</a> ";
        }
        else
        {
            Output += ("<b>" + i + "</b> ");
            }
      i++;
      }
      return Output;
           
    }
      ]]></msxsl:script>
    <xsl:template match="@Pages">
        <div class="pageNavigation">
            Side <xsl:value-of select="../@CurrentPage"/> af <xsl:value-of select="."/> (i alt <xsl:value-of select="../@Users"/> resultater)<br/>
            <xsl:if test="../@Pages&gt;1">
                <xsl:value-of select="user:addPaging(../@CurrentPage,../@Pages,./RequestContent/ServerVariables/Entry[@Name='URL'],../FormData/userSearchString/UrlSearchString)" disable-output-escaping="yes"/>
            </xsl:if>
            <!--           
            Side <xsl:value-of select="../@CurrentPage" /> af <xsl:value-of select="." /><xsl:if test="../@Pages&gt;1">: <xsl:value-of select="user:addPaging(../@CurrentPage,../@Pages,./RequestContent/ServerVariables/Entry[@Name='URL'],../FormData/userSearchString/UrlSearchString)" disable-output-escaping="yes" /></xsl:if>
            -->
            <br/>
            <br/>
        </div>
    </xsl:template>
</xsl:stylesheet>
Avatar billede den-evil Nybegynder
04. april 2008 - 11:33 #9
Hov, foreach var også skrevet forkert, derfor... Nu får jeg ingen fejl på XSLT'en, men får denne fejl nu:

To use a result tree fragment in a path expression, first convert it to a node-set using the msxsl:node-set() function.
Avatar billede den-evil Nybegynder
04. april 2008 - 11:57 #10
Nu har jeg fået det til at melde uden fejl eller noget, men den udskriver intet:

    <xsl:template match="Users">

            <xsl:variable name="alphabet">
            <letters>
                <node>A</node>
                <node>B</node>
                <node>C</node>
                <node>D</node>
                <node>E</node>
                <node>F</node>
                <node>G</node>
                <node>H</node>
                <node>I</node>
                <node>J</node>
                <node>K</node>
                <node>L</node>
                <node>M</node>
                <node>N</node>
                <node>O</node>
                <node>P</node>
                <node>Q</node>
                <node>R</node>
                <node>S</node>
                <node>T</node>
                <node>U</node>
                <node>V</node>
                <node>W</node>
                <node>X</node>
                <node>Y</node>
                <node>Z</node>
                <node>Æ</node>
                <node>Ø</node>
                <node>Å</node>
            </letters>
        </xsl:variable>
   
        <xsl:choose>
            <xsl:when test="@IsUserForm = 'False' and @IsSearchResult = 'False'">
                <xsl:call-template name="searchUserForm"/>
            </xsl:when>
        </xsl:choose>
        <xsl:choose>
            <xsl:when test="@IsSearchResult = 'True'">
                <div class="searchResults">
                    <h1>Medarbejdere</h1>
                    <p>
                        <b>
                            Søgeresultat for "<xsl:value-of disable-output-escaping="yes" select="./FormData/userSearchString/HtmlSearchString"/>":
                        </b>
                    </p>
                </div>
                <div class="sResults">
                    <table width="100%" cellpadding="0" cellspacing="3" id="members">
                        <tr>
                            <th class="name">Navn</th>
                            <th class="title">Stilling</th>
                            <th class="phone">Telefon</th>
                            <th class="email">Email</th>
                        </tr>
                        <xsl:for-each select="msxsl:node-set($alphabet)/letters">
                            <!-- Udskriv begyndelses bogstav hvis der findes nogen -->
                            <xsl:if test="substring(User/Fornavn, 1) = text()">
                                <!-- Test om der er nogle brugere med begyndelses bogstav fra $alphabet/node -->
                                <xsl:value-of select="."/>
                            </xsl:if>
                            <!-- List svinene -->
                            <xsl:apply-templates select="User[substring(fornavn,1) = .]" mode="result"/>
                            <xsl:apply-templates select="User" mode="result"/>
                        </xsl:for-each>
                    </table>
                    <br/>
                    <xsl:apply-templates select="@Pages"/>
                </div>
            </xsl:when>
            <xsl:otherwise>
                <xsl:choose>
                    <xsl:when test="@AllowEdit = 'True' and @Mode = 'Edit'">
                        <xsl:apply-templates select="User" mode="input"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="User" mode="text"/>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <xsl:template name="searchUserForm">
        <h1>Medarbejdere</h1>
        <p>Her kan du søge efter medarbejdere. Du kan begrænse din søgning til medarbejdere i en bestemt del af organisationen eller med en bestemt stillingsbetegnelse (eller begge)</p>
        <div id="searchMedarbejder">
            <form method="post" name="userSearchForm" action="" class="medarbejder">
                Navn eller telefonummer (eller dele deraf)
                <br/>
                <input type="hidden" name="userSearchButton" value="Søg"/>
                <input>
                    <xsl:attribute name="type">text</xsl:attribute>
                    <xsl:attribute name="name">userSearchString</xsl:attribute>
                    <xsl:attribute name="value"><xsl:value-of select="./FormData/userSearchString/SearchString"/></xsl:attribute>
                    <xsl:attribute name="onclick">this.value='';</xsl:attribute>
                </input>
                <input type="Submit" class="cImgButton2" value="Søg"/>
            </form>
        </div>
    </xsl:template>
    <xsl:template match="User" mode="result">
        <!--<xsl:variable name="Firstname" select="Fornavn"/>
        <xsl:variable name="FirstLetter" select="substring({$FirstName}, 1, 1)"/>-->
        <!--<xsl:choose>
            <xsl:when test="{$FirstLetter} == {$FirstLetter}">
                <tr>
                    <th class="name">Navn</th>
                    <th class="title">Stilling</th>
                    <th class="phone">Telefon</th>
                    <th class="email">Email</th>
                </tr>
            </xsl:when>
            <xsl:otherwise/>
        </xsl:choose>-->
        <tr>
            <td class="nameresult">
                <a href="?userId={Id}">
                    <xsl:value-of select="Fornavn"/>
                    <xsl:text> </xsl:text>
                    <xsl:value-of select="Efternavn"/> (<xsl:value-of select="Kaldenavn"/>)
                </a>
            </td>
            <td class="titleresult">
                <xsl:value-of select="Stilling"/>
            </td>
            <td class="phoneresult">
                <xsl:value-of select="Arbejdstelefon"/>
            </td>
            <td class="emailresult">
                <a href="mailto:{Arbejdsemail}">
                    <xsl:value-of select="Arbejdsemail"/>
                </a>
            </td>
        </tr>
    </xsl:template>

--------------------------------

Resultatet ser sådanne ud:


Søgeresultat for "P":

Navn Stilling Telefon Email


Side 1 af 37 (i alt 369 resultater)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
Avatar billede jokkejensen Novice
04. april 2008 - 12:07 #11
ja det er min fejl, når man opretter et nodeset gennem en streng smidt i en variable, skal du lige importere xmlns:msxsl="urn:schemas-microsoft-com:xslt"

og benytte: foreach select="msxsl:node-set($alphabet)" />

Sry
/J
Avatar billede jokkejensen Novice
04. april 2008 - 12:09 #12
din <xsl:stylesheet> skal også lige have tilføjet :  exclude-result-prefixes="msxsl"
Avatar billede den-evil Nybegynder
04. april 2008 - 12:19 #13
Jeps, det har jeg gjort... men får stadig resultat:
Resultatet ser sådanne ud:


Søgeresultat for "P":

Navn Stilling Telefon Email


Side 1 af 37 (i alt 369 resultater)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

Så den udskriver ikke forbogstav, eller navnene med P
Avatar billede jokkejensen Novice
04. april 2008 - 12:36 #14
har du et demo udtræk af "users" xml'en..

Så kan jeg bearbejde det.

/JJ
Avatar billede jokkejensen Novice
04. april 2008 - 12:38 #15
Altså jeg forstår dig som om du vil have dem alle listet, men hvis du ved hvilke du vil have altså alle dem med p, er det ikke en hensigsmæssig metode.

Jeg formodede du ville have ALLE brugerne listet, grupperet efter forbogstav.

Og kan derfor ikke se hvor søgning kommer ind i det..
Avatar billede den-evil Nybegynder
04. april 2008 - 12:52 #16
sådan her:

<Users ModuleId="1" IsSearchResult="False" IsUserForm="True" Mode="Edit" AllowEdit="True">
    <User Index="1" IsCurrentUser="True">
        <Id>a223d95bbc59c9408111f172006e585a</Id>
        <Initialer Fieldname="initialer"/>
        <Fornavn Fieldname="fornavn">Synkron</Fornavn>
</User>
</Users>

Selvfølgelig er alle andre ting også deri, men det er bare lige fornavn vi lige har her
Avatar billede den-evil Nybegynder
04. april 2008 - 12:55 #17
Nej nej, ikke helt... For idet jeg søger på P, så kan der fx være en der hedder Anne Petersen og evt en der hedder Peter Andersen

Så skal de listes sådan her:

A
Navn Stilling Telefon Email
Anne Petersen  Lærer  88888888 xxx@xxx.dk

P
Navn Stilling Telefon Email
Peter Anderse  Mekaniker  99999999 xxx@xxx.dk
Avatar billede den-evil Nybegynder
04. april 2008 - 12:56 #18
Men ja, det er vel grupperet efter Forbogstav :)
Avatar billede jokkejensen Novice
04. april 2008 - 13:12 #19
ahh det skaber lige et led mere :)

Jeg er lige presset af en hasteopgave selv, vil ikke love det bliver i dag, men skal nok lige smadre noget sammen til dig :)

/JJ
Avatar billede den-evil Nybegynder
04. april 2008 - 13:13 #20
Det lyder virkelig godt, på forhånd mange tak...
Avatar billede den-evil Nybegynder
04. april 2008 - 14:17 #21
Hej igen...

Jeg fandt en løsning:

<xsl:template match="/">
        <xsl:apply-templates select="Users"/>
    </xsl:template>
    <xsl:template match="Users">
            <xsl:variable name="users" select="." />
            <xsl:variable name="alphabet">
            <letters>
                <node>A</node>
                <node>B</node>
                <node>C</node>
                <node>D</node>
                <node>E</node>
                <node>F</node>
                <node>G</node>
                <node>H</node>
                <node>I</node>
                <node>J</node>
                <node>K</node>
                <node>L</node>
                <node>M</node>
                <node>N</node>
                <node>O</node>
                <node>P</node>
                <node>Q</node>
                <node>R</node>
                <node>S</node>
                <node>T</node>
                <node>U</node>
                <node>V</node>
                <node>W</node>
                <node>X</node>
                <node>Y</node>
                <node>Z</node>
                <node>Æ</node>
                <node>Ø</node>
                <node>Å</node>
            </letters>
        </xsl:variable>
   
        <xsl:choose>
            <xsl:when test="@IsUserForm = 'False' and @IsSearchResult = 'False'">
                <xsl:call-template name="searchUserForm"/>
            </xsl:when>
        </xsl:choose>
        <xsl:choose>
            <xsl:when test="@IsSearchResult = 'True'">
                <div class="searchResults">
                    <h1>Medarbejdere</h1>
                    <p>
                        <b>
                            Søgeresultat for "<xsl:value-of disable-output-escaping="yes" select="./FormData/userSearchString/HtmlSearchString"/>":
                        </b>
                    </p>
                </div>
                <div class="sResults">
                    <table width="100%" cellpadding="0" cellspacing="3" id="members">
                        <tr>
                            <th class="name">Navn</th>
                            <th class="title">Stilling</th>
                            <th class="phone">Telefon</th>
                            <th class="email">Email</th>
                        </tr>
                        <xsl:for-each select="msxsl:node-set($alphabet)/letters/node">
                       
                        <!--xxx<xsl:copy-of select="."/>ccc
                        <xsl:value-of select="User/@*" />
                        <xsl:value-of select="substring(User/Fornavn,1)" />-->
                       
                            <!-- Udskriv begyndelses bogstav hvis der findes nogen -->
                            <!--xsl:if test="substring(User/Fornavn, 1) = ."-->
                            <xsl:if test="count($users/User[starts-with(Fornavn, current()/text())])">
                                <!-- Test om der er nogle brugere med begyndelses bogstav fra $alphabet/node -->
                                <tr>
                                    <td style="background-color: #CCC;"><xsl:value-of select="."/></td>
                                    <td style="background-color: #CCC;">&#160;</td>
                                    <td style="background-color: #CCC;">&#160;</td>
                                    <td style="background-color: #CCC;">&#160;</td>
                                </tr>
                            </xsl:if>
                            <!-- List dem -->
                            <xsl:apply-templates select="$users/User[starts-with(Fornavn, current()/text())]" mode="result"/>
                        </xsl:for-each>
                        <!--<xsl:apply-templates select="User" mode="result"/>-->
                    </table>
                    <br/>
                    <xsl:apply-templates select="@Pages"/>
                </div>
            </xsl:when>
            <xsl:otherwise>
                <xsl:choose>
                    <xsl:when test="@AllowEdit = 'True' and @Mode = 'Edit'">
                        <xsl:apply-templates select="User" mode="input"/>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:apply-templates select="User" mode="text"/>
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
   

-----------------------------------

Smider du et svar, og igen, mange tak for din hjælp :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester