代码之家  ›  专栏  ›  技术社区  ›  HarsH

限制foreach的XSLT前置同级

  •  2
  • HarsH  · 技术社区  · 6 年前

    我的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 回复  |  直到 6 年前
        1
  •  3
  •   Rupesh_Kr    6 年前

    您可以使用

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