18. marts 2001 - 12:57Der er
4 kommentarer og 1 løsning
following-sibling
Hvis jeg gør følgende: <xsl:apply-templates select=\"descendant::node()/child::LINK[@TMSP=$p-urltmsp]/following-sibling::LINK[1]\"/>
Kan jeg ikke være sikker på at der er noget LINK element der opfylder betingelserne, så jeg vil gerne teste på om template\'en bliver kaldt eller ikke, så jeg evt. kan kalde en anden template. En metode kunne være at returnere en værdi fra templaten, som man kunne teste på, men det kan så vidt jeg kan se ikke lade sig gøre. Er der nogen der har en løsning på mit problem?
Hejsa Du kan, i den template hvor du gerne vil vide om der returneres noder eller ej, lave en choose sætning: <xsl:choose> <xsl:when test=\"descendant::node()/child::LINK[@TMSP=$p-urltmsp]/following-sibling::LINK[1]\"> Node fundet! </xsl:when> <xsl:otherwise> Gør noget andet </xsl:otherwise> </xsl:choose>
iøvrigt bør du nok kigge nærmere på din XPath funktion, da den er meget besværlig og godt kan optimeres.
.//LINK[@TMSP=$p-urltmsp]/following-sibling::LINK
Dette vil altid gå fra aktuelle context, og for alle LINK noder, der har attributten TMSP lig med variablen $p-urltmsp, returnere den første sibling til denne (lidt lang sætning, men den skulle være der)! =o)
Du bør måske kigge efter Michael McKays XSLT reference fra Wrox. Guldbogen i XSLT/Xpath sammenhæng.
Mange tak for svaret og det virker. Jeg har også undladt predicatet [1]på LINK. Det virker også, men kan du så svare på hvorfor jeg ikke kan fjerne det på følgende: <xsl:apply-templates select=\"FOLDER[@NAME=$p-folder]/child::LINK[1]\"/> Hvis jeg fjerner det får jeg alle LINK elementer ud under den pågældende FOLDER. :-´)
Grunden til at det virkede uden predicatet [1] var mit XML, der ikke indeholdt nok testmateriale. Som jeg ser det skal man sætte [1] på for kun at få returneret 1. Men ellers mange tak for hjælpen.
Ok, dette er et svar! :-) Du kan forresten godt nøjes med kun at få værdien af den første sibling uden at skrive [1] explicit i din kode.
<xsl:value-of select=\"/Node/NodeValue\"/> returnerer altid kun 1 værdi i value-of statements, mens den ved test-sammenligninger i if-sætninger og lignende, altid returnerer alle noder der svarer til din forespørgsel!
Synes godt om
Ny brugerNybegynder
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.