c# - XSLT 前同级来限制 foreach

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

我做错了什么?

最佳答案

你可以使用

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

关于c# - XSLT 前同级来限制 foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913587/

相关文章:

xml - xslt 1.0 合并空元素名称

java - 从 POJO 生成 SOAP XML

c# - 通过表达式 EPPlus 格式化条件

c# - 字典:无法将属性或索引器分配给:它是只读的

c# - 如何检测我的程序是否在 Windows 中运行?

c# - 寻找可能的组合 linq

c# - 如何从按钮单击调用 Gridview 单元格单击事件

C# Windows Form .Net 和 DOS 控制台

.net - 关于 System.OperatingSystem 类的问题

c# - 使用 StringReader 与 XmlNodeReader 反序列化对象属性