在兄弟姐妹之前的XSLT限制foreach

时间:2018-04-19 05:48:54

标签: c# .net xml xslt xslt-1.0

我的一小块xml是:

<svg>
<g id='NOCUT'>
<line x="5.0"/>
<line x="55.0"/>
<path x="50.0"/>
<line x="0.0"/>
<line x="55.0"/>
.
.
</g>
</svg>

在我的xslt中,我应该只能读到这个列表,直到它遇到x = 0;需要忽略之后的所有元素。

我尝试写下面的内容,但它不起作用:

<xsl:for-each select="svg[g/@id='NOCUT']">
<xsl:for-each select="g/*[preceding-sibling::node[line/@x = '0.0']]">
<xsl:value-of select="x"/>      
</xsl:foreach>
</xsl:foreach>

我做错了什么?

1 个答案:

答案 0 :(得分:3)

你可以使用

<xsl:for-each select="g/*[not(preceding-sibling::line[@x = '0.0'])]">

而不是

<xsl:for-each select="g/*[preceding-sibling::node[line/@x = '0.0']]">

<xsl:value-of select="x"/>更改为<xsl:value-of select="@x"/>