Announcement

Collapse
No announcement yet.

warum wird <xsl:number> nicht hochgezählt???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • warum wird <xsl:number> nicht hochgezählt???

    hallo,
    stehe gerade wie der ochs vorm berg...

    hab folgendes in meiner xml stehen:

    HTML Code:
    <lg rhyme="aab">
    								<l>
    									 blabla <rhyme label="a">muh</rhyme>
    								</l>
    								<l>
    									 blabla <rhyme label="a">kuh</rhyme>
    								</l>
    								<l>
    									 blabla <rhyme label="b">haufen</rhyme>
    								</l>
    
    							</lg>
    in meiner xsl habe ich ein template geschrieben, welches folgendermaßen aussieht:

    HTML Code:
    <xsl:template match="rhyme">
          <span>
            <xsl:attribute name="id">
              <xsl:text>r_</xsl:text><xsl:number/>
            </xsl:attribute>
            <xsl:value-of select="."/>
          </span>
          <script type="text/javascript">addElement("<xsl:value-of select="@label"/>","<xsl:text>r_</xsl:text><xsl:number/>");</script>
      </xsl:template>
    wenn ich dann aber das ganze in eine html umwandeln lasse, wird aber number nicht hochgezählt sondern bleibt ständig auf 1:

    <script type="text/javascript">addElement("a","r_1");</script>
    <script type="text/javascript">addElement("a","r_1");</script>
    <script type="text/javascript">addElement("b","r_1");</script>

    wie kann ich das beheben?

    greetz
    Zuletzt editiert von m0ps; 29.01.2010, 17:10.

  • #2
    xsl:number gibt ohne Attribute die Position im Source-Tree an und hier steht rhyme stets an erster Stelle unterhalb von l. Lasse mal die l-Elemente weg, dann wird auch 1, 2, 3 ausgegeben. Sinnvoller ist hier jedoch die Verwendung von position() in dieser Form (BTW: xsl:attribute ist hier wieder einmal unnötig):
    Code:
    <xsl:template match="/">
      <xsl:apply-templates select="//rhyme"/>  
    </xsl:template>
    
    <xsl:template match="rhyme">
      <span id="r_{position()}">
        <xsl:value-of select="."/>
      </span>
      <script type="text/javascript">addElement("<xsl:value-of select="@label"/>","<xsl:text>r_</xsl:text><xsl:value-of select="position()"/>");</script>
    </xsl:template>

    Comment

    Working...
    X