Ich habe ein Szenario, in dem ich die XML-Tag-Werte unabhängig von seinem Tag-Namen zählen muss. Unten ist mein xml,Zähle xml-Tag-Werte unabhängig vom Tag-Namen mit XSLT
<?xml version="1.0" encoding="UTF-8"?>
<output>
<result>
<value>
<color1>G</color1>
<color2>Y</color2>
</value>
<value>
<color1>Y</color1>
<color2>R</color2>
</value>
</result>
<result>
<value>
<color1>G</color1>
<color2>R</color2>
</value>
<value>
<color1>Y</color1>
<color2>R</color2>
</value>
</result>
</output>
- Hier muss ich die Anzahl der Vorkommen von G, Y, R aus der XPath // Ausgabe zählen/Ergebnis sollte
Der Wert innerhalb // Ausgabe/Ergebnis bleiben und können es in der Ausgabe hinzufügen. Unten ist die xslt, die ich verwendet, aber es gibt immer zählen als 0.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> <xsl:template match="/"> <output> <xsl:for-each select="//output/result"> <result> <green><xsl:value-of select="count(/value[./color[*]='G'])" /></green> <red><xsl:value-of select="count(/value[./color[*]='R'])" /></red> <yellow><xsl:value-of select="count(/value[./color[*]='Y'])" /</yellow> <xsl:value-of select="." /> </result> </xsl:for-each> </output> </xsl:template> </xsl:stylesheet>
Die gewünschte Ausgabe als unten.
<?xml version="1.0" encoding="UTF-8"?>
<output>
<result>
<GreenCount>1</GreenCount>
<RedCount>1</RedCount>
<YellowCount>2</YellowCount>
<value>
<color1>G</color1>
<color2>Y</color2>
</value>
<value>
<color1>Y</color1>
<color2>R</color2>
</value>
</result>
<result>
<GreenCount>1</GreenCount>
<RedCount>2</RedCount>
<YellowCount>1</YellowCount>
<value>
<color1>G</color1>
<color2>R</color2>
</value>
<value>
<color1>Y</color1>
<color2>R</color2>
</value>
</result>
</output>
Vielen Dank Jim. –