有没有办法计算使用XSL(ver = 1.0)在不同文本节点中包含其他节点中的字符串数量?我有以下xml,需要计算给定文本中出现的颜色数量。输出应为:
Color counts: 2 (white, gold)
Color counts: 2 (red, yellow)
xml看起来像:
<items>
<colors>
<color>red</color>
<color>yellow</color>
<color>blue</color>
<color>white</color>
<color>purple</color>
<color>gold</color>
<color>silver</color>
</colors>
<item>
<text>
Mr. Johnson prefers a white with gold logo truck.
</text>
<text>
Mr. Johnson prefers a red with logo yellow truck.
</text>
</item>
</items>
答案 0 :(得分:1)
沿着这些方向尝试:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/items">
<xsl:for-each select="item/text">
<xsl:variable name="colors" select="../../colors/color[contains(current(), .)]" />
<xsl:text>Color counts: </xsl:text>
<xsl:value-of select="count($colors)"/>
<xsl:text> (</xsl:text>
<xsl:for-each select="$colors">
<xsl:value-of select="."/>
<xsl:if test="position()!=last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:text>) </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>