27. september 2007 - 19:20
Der er
8 kommentarer og 1 løsning
Visning af children med den samme parent
Hej, Jeg har loopet mig ned i xml'en og fundet det child, som jeg skal bruge - nu skal jeg så bare have vist de childrens, som ligger i den allerede fundet parent. Hvordan? (Kan _sikkert_ laves bedre) <xsl:template match="/navigation"> <xsl:apply-templates select="page"> <xsl:with-param name="depth" select="1"/> </xsl:apply-templates> </xsl:template> <xsl:template match="page"> <xsl:param name="depth"/> <xsl:if test="@active='true'"> <xsl:value-of select="@name" disable-output-escaping="yes"/> <!-- Her er den kendte child - hvad med resten ? --> </xsl:if> <xsl:if test="count(page)"> <xsl:apply-templates select="page"> <xsl:with-param name="depth" select="$depth+1"/> </xsl:apply-templates> </xsl:if> </xsl:template>
Annonceindlæg fra FPT Software
28. september 2007 - 11:59
#1
Det er lettere å forstå hvis du kommer med et (lite!) eksempel på en av XML-filene dine. Og litt prosa som beskriver hvilke noder du snakker om. Et eller annet med preceding-sibling:: ?
28. september 2007 - 12:36
#2
Min xml er lidt sparsom og jeg har ikke mulighed for at tilføje ekstra: <navigation> <page active='false' name='side 1' /> <page active='false' name='side 2' /> <page active='false' name='side 3'> <page active='false' name='side 6' /> <page active='false' name='side 7' /> <page active='true' name='side 8' /> <page active='false' name='side 9' /> </page> <page active='false' name='side 4' /> <page active='false' name='side 5' /> </navigation> Skal returne : "side 6 side 7 side 8 side 9"
28. september 2007 - 13:36
#3
...og det skal den gjøre fordi side 8 har active="true", right?
28. september 2007 - 13:40
#4
korrekt
28. september 2007 - 21:34
#5
Noget i denne stil? <xsl:template match="/navigation"> <xsl:apply-templates select="page"> <xsl:with-param name="depth" select="1"/> </xsl:apply-templates> </xsl:template> <xsl:template match="page"> <xsl:param name="depth"/> <xsl:if test="@active='true'"> <!-- Her er den kendte child --> <xsl:value-of select="@name"/> <!-- Her dens søskene --> <xsl:for-each select="../page"> <siblings> <xsl:value-of select="@name"/> </siblings> </xsl:for-each> </xsl:if> <xsl:if test="count(page)"> <xsl:apply-templates select="page"> <xsl:with-param name="depth" select="$depth+1"/> </xsl:apply-templates> </xsl:if> </xsl:template>
29. september 2007 - 00:32
#6
Super flot :) I skal begge have tak - læg et svar.
29. september 2007 - 07:35
#7
Svar :^)
29. september 2007 - 21:33
#8
Nu ved jeg ikke om du skal bruge nogen af de andre oplysninger du samler ind undervejs, men ellers kan det ogsåklares på denne måde: <xsl:template match="/"> <xsl:for-each select="//page[@active='true']/../page"> <siblings> <xsl:value-of select="@name"/> </siblings> </xsl:for-each> </xsl:template>
30. september 2007 - 21:18
#9
Lukker
Kurser inden for grundlæggende programmering