将节点集值转换为字符串



我正在尝试将一组节点的值转换为字符串,以便我可以使用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.

相关内容

  • 没有找到相关文章

最新更新