So erhalten Sie einen Zähler in xsl: für jede Schleife, der die Anzahl der aktuell verarbeiteten Elemente widerspiegelt.
Zum Beispiel ist mein Quell-XML
<books>
<book>
<title>The Unbearable Lightness of Being </title>
</book>
<book>
<title>Narcissus and Goldmund</title>
</book>
<book>
<title>Choke</title>
</book>
</books>
Was ich bekommen möchte ist:
<newBooks>
<newBook>
<countNo>1</countNo>
<title>The Unbearable Lightness of Being </title>
</newBook>
<newBook>
<countNo>2</countNo>
<title>Narcissus and Goldmund</title>
</newBook>
<newBook>
<countNo>3</countNo>
<title>Choke</title>
</newBook>
</newBooks>
Das zu ändernde XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<newBooks>
<xsl:for-each select="books/book">
<newBook>
<countNo>???</countNo>
<title>
<xsl:value-of select="title"/>
</title>
</newBook>
</xsl:for-each>
</newBooks>
</xsl:template>
</xsl:stylesheet>
Die Frage ist also, was anstelle von ???. Gibt es ein Standardschlüsselwort oder muss ich einfach eine Variable deklarieren und innerhalb der Schleife erhöhen?
Da die Frage ziemlich lang ist, sollte ich wahrscheinlich eine Zeile oder ein Wort Antwort erwarten :)
xsl:if
in der gibtxsl:for-each
? Was ist ein "richtiger Zähler"? Können Sie auf eine Ressource verweisen?Versuchen Sie,
<xsl:number format="1. "/><xsl:value-of select="."/><xsl:text>
anstelle von ??? einzufügen.Beachten Sie die "1." - dies ist das Zahlenformat. Mehr Infos: hier
quelle
<xsl:number format="1. " value="position()"/>
Versuchen:
Bearbeiten - hatte dort ein Einfrieren des Gehirns, position () ist einfacher!
quelle
Sie können auch bedingte Anweisungen für Postion () ausführen, was in vielen Szenarien sehr hilfreich sein kann.
für zB.
quelle
quelle