将节点集值转换为字符串

时间:2014-12-08 19:31:14

标签: xslt xslt-1.0 xslt-2.0

我试图将一组节点值转换为字符串,以便我可以使用XSLT包含函数。下面的示例未能返回'true'并且错误输出,因为contains()不处理$ allColors的节点集,其应包含'red white blue'。有谁知道如何转换$ allColors以便它可以在contains方法中使用?

<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>

2 个答案:

答案 0 :(得分:0)

我倾向于同意michaels评论,你可以使用以下内容,它应该得到你想要的,并正确分组:

<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>

答案 1 :(得分:0)

感谢大家的回复。我如何最终搜索是否存在特定颜色 string-length(current-group()[color =&#39; red&#39;] / color)&gt; 0.