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