我正在尝试将一组节点的值转换为字符串,以便我可以使用XSLT包含函数。下面的示例无法返回"true"并出错,因为 contains() 不处理节点集$allColors,该节点集应包含"红白蓝"。有谁知道如何转换$allColors以便它可以在包含方法中使用?
<colors>
<color type="rgb">red</color>
<color type="rgb">white</color>
<color type="rgb">blue</color>
</colors>
<xsl:for-each-group select="colors/color" group-by="@type">
<xsl:variable name="allColors" select="current-group()/color"/>
<allColors><xsl:value-of select="contains($allColors, 'red')"/></allColors>
</xsl:for-each-group>
我倾向于同意迈克尔斯的评论,不过你可以使用以下,它应该得到你想要的,并正确分组:
<xsl:for-each-group select="colors/color" group-by="@type">
<group>
<type><xsl:value-of select="@type" /></type>
<hasRed><xsl:value-of select="current-group() = 'red'" /></hasRed>
</group>
</xsl:for-each-group>
感谢大家的回复。我最终如何搜索特定颜色是否存在是如果string-length(current-group()[color='red']/color)> 0.