Avatar billede ulr Nybegynder
07. marts 2003 - 11:21 Der er 20 kommentarer og
1 løsning

dynamisk udvælgelse/søgning i XSL

<xsl:for-each select="$root/item[@key='home']/item[@key='project groups']/item[@key='workplace learning']/item[@key='people']/item">
<!--          <xsl:if test="pt:fld('workplace learning',.) = 1">-->
            <xsl:call-template name="WritePerson">
              <xsl:with-param name="person" select="." />
            </xsl:call-template> 
<!--          </xsl:if>-->
        </xsl:for-each>   

Dette er min kode.
Jeg ønskeri midlertid at den kun hardkodes til at gå i bib 'Home' derefter 'Project Groups' Efter dette bib er nået skal den dynamisk kunne søge i 6 forskellige biblioteker, hvor 'Workplace Learning' er en af dem. Efter dette "niveau" skal den søge i 'People' og udskrive alle dem hvor det aktuelle bib (fx 'workplace learning') er valgt eller som den søgningen står i.

Håber det er til at forstå, ellers kan jeg sagtens uddybe...
Avatar billede atoft Nybegynder
07. marts 2003 - 12:54 #1
Har du et eksempel på dit xml?
Avatar billede ulr Nybegynder
07. marts 2003 - 13:01 #2
Jeg er lige så stille ved at være tættere på mit problem....her er min nye kode:

<!-- LLD specific people -->
   
    <xsl:for-each select="$root/item[@key='home']/item[@key='project groups']/item">

    <xsl:variable name="activeconsortia" select="@id"/>
<xsl:if test="pt:fld('workplace learning',.) = $activeconsortia">

        <xsl:for-each select="$root/item[@key='home']/item[@key='project groups']/item[@key='workplace learning']/item[@key='people']/item">

            <xsl:call-template name="WritePerson">
              <xsl:with-param name="person" select="." />
            </xsl:call-template> 
        </xsl:for-each>
    </xsl:if>
    </xsl:for-each>

Den første del:
Den skulle gerne udvælge den "projekt group" jeg står i....og hvis den er = "workplace learning" skulle den gerne gå videre og så skrive "workplaceleraning's" med arbejdere ud....

Det virke bare som om jeg ikke kan få den til at indlæse den aktive "project group" som jeg er i???
Avatar billede atoft Nybegynder
07. marts 2003 - 13:18 #3
du har

select="$root/item[@key='home']/item[@key='project groups']/item[@key='workplace learning']/item[@key='people']/item"

er dine item opbygget i et hierarki?

Savner stadig et xml eksempel.
Avatar billede ulr Nybegynder
07. marts 2003 - 13:19 #4
<xsl:variable name="activeconsortia" select="@id"/>

Kan det være denne del der er forkert......

Den skulle gerne tage navnet på det consortie man står i(på webben), når man har valgt sig først ind på "Project group" og derefter valgt et consortie/project group.

hvis det giver mening for dig
Avatar billede ulr Nybegynder
07. marts 2003 - 13:21 #5
jep det er et hirarki....

hvis man fjerne koden over den linie som du har valgt, så dur det fint....men så skriver den kun "workplace learnings" medarbejdere ud.....det vil sige på de andre "consortie/projektgroup" sider skriver den også "workplace learnings" medarbejdere ud.

Så selve hirarki selectionen skulle være god nok.
Avatar billede atoft Nybegynder
07. marts 2003 - 13:25 #6
Jeg vil anbefale, at du kører rekursivt, hvis du har et hierarki af items.

Men send nu noget XML !!!!!!!!!!
Avatar billede ulr Nybegynder
07. marts 2003 - 13:30 #7
;-)

Min IT-leder er her ikke, og jeg skal bruge ham for at få adgang til XML filerne.....Jeg sidder og retter i den XSL kode som han har skrevet...

med hensyn til hirarki så var jeg måske lidt hurtig....det sådan set bare "mapper" med "undermappe" som udgør strukturen.
Avatar billede ulr Nybegynder
07. marts 2003 - 13:31 #8
mapperne ligger i en lige linie, så der er ingen træstruktur
Avatar billede atoft Nybegynder
07. marts 2003 - 13:34 #9
Hvordan kan du sidde og rette i xsl koden uden at kunne teste det?

Det som umiddelbart ser underligt ud, er at du i den inderste for-each starter med $root igen.
Avatar billede ulr Nybegynder
07. marts 2003 - 13:40 #10
Jeg tester det over nettet...uploader og tester.

ok...hvordan kan man sætte variablen "activeconsortia" ind i linien så den starter derfra og så går i mappen "people"?
Avatar billede atoft Nybegynder
07. marts 2003 - 22:46 #11
Hvis du vil have min hjælpe bliver jeg nødt til at se noget xml.

Lav evt. dit xslt om til dette her.

<xsl:template match="/">
    <xsl:copy-of select="." />
</xsl:template>

Så skulle du gerne få en kopi af din xml.
Avatar billede ulr Nybegynder
12. marts 2003 - 12:16 #12
Hej igen.....

Har lige et andet spg...
<xsl:variable name="consortia_id" select="$root/item[@key='home']/item[@key='project groups']" />

<xsl:if test="$consortia_id = $consortia_id">

Hvordan kan jeg finde ud af hvad jeg læser ind i variablen "consortia:id"? og hvordan får jeg den eventuelt skrevet ud på skærmen???
Avatar billede atoft Nybegynder
12. marts 2003 - 12:20 #13
du kan lave en

<xsl:for-each select="$consortia_id">
  <xsl:value-of select="." />
</xsl:for-each>

jeg forstår ikke hvad du vil med

<xsl:if test="$consortia_id = $consortia_id">
Avatar billede ulr Nybegynder
12. marts 2003 - 12:28 #14
<xsl:variable name="consortia_id" select="$root/item[@key='home']/item[@key='project groups']" />

<xsl:if test="$consortia_id = $consortia_id">

Det er meningen at den skal gå ind i en if-sætning hvis $consortia_id er lig en bestemt værdi....

Fx:
<xsl:if test="'workplace learning' = $consortia_id">

men det fungere ikke, så jeg er i tvivl om hvilken værdi jeg i det hele taget får læst ind i variablen...??
grunden til jeg har sat variablen = variablen er for at jeg kan komme ind i min if-sætning, men det er selvfølgelig ikke meningen at variablen = variablen.
Avatar billede atoft Nybegynder
12. marts 2003 - 12:31 #15
Din variable kommer til at bestå af et nodeset af item noder, som alle opfylder din betingelse. Det kan altså godt være mere end en node i din consortia_id variabel.
Avatar billede ulr Nybegynder
12. marts 2003 - 12:36 #16
ja, det var også lidt det jeg troede.....

Problemet er nemlig at der findes 6 forskellige noder i 'project groups' og så vidt jeg forstår er det fra 'project groups' jeg indlæse i min variabel...?

Jeg vil derfor have den til at indlæse den specifikke 'project group', jeg befinder mig i, i min variabel....?

Jeg har ladet mig fortælle at min sætning skulle tage den specifikke 'project group' jeg er i når jeg befinder mig i en bestem 'project group' på webben, men det er måske forkert??
Avatar billede atoft Nybegynder
12. marts 2003 - 12:43 #17
jo men du starter jo netop med din $root og derfor får du jo netop alle noder.
Avatar billede ulr Nybegynder
12. marts 2003 - 13:16 #18
okay....men hvordan får jeg så den aktuelle node...?

Det kan være det vil hjælpe dig lidt hvis du går til følgende side...
http://www.lld.dk/default.asp?path={B975773B-DEB6-476D-A1C5-73AFEF84B801}
Der vil du kunne se strukturen...hele siden er bygget af en stor XML fil, som er 100% lig med strukturen på siden....det er menuen ude i venstre side som gerne skulle repræsntere den selec statement jeg laver...

Og det er så "workplace learning" menu punktet jeg vil have fat i.
Avatar billede atoft Nybegynder
12. marts 2003 - 13:41 #19
Desværre kan jeg ikke hjælpe dig viderer uden xslt og xml :-(
Avatar billede ulr Nybegynder
12. marts 2003 - 13:45 #20
ok du skal i hvart fald have tusind tak for hjælpen....;-)

lige et lille sidste spg...
når jeg har min $consortia_id
og jeg så laver en:
    <xsl:for-each select="$consortia_id/item">
Her løber den de 6 "workgroups" igennem...
    <xsl:if test="'Workplace Learning' = $consortia_id/item">
Her vi jeg have den til at gå ind i if-sætningen hvis den "for-each" aktuelle node er = 'Workplace Learning"...
Gør jeg det rigtig?
Avatar billede atoft Nybegynder
12. marts 2003 - 13:51 #21
Nej det gør du ikke.

det skal du gøre således.

  <xsl:for-each select="$consortia_id/item">
Her løber den de 6 "workgroups" igennem...
    <xsl:if test=". = 'Workplace Learning'">

for når du laver en for-each bliver current-node "." automatisk skriftet.
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