比较XSLT中的节点

时间:2014-04-29 10:35:03

标签: xml xslt

我是xslt的新蜜蜂,我不知道当一个节点更深一层时如何处理 比下图像的另一个节点。我想比较这两个值。

enter image description here

 <xsl:variable name="CURRENT_HEADING_ID">
      <xsl:if test="HEADING_ID[.!='']">
            <xsl:value-of select="HEADING_ID" />
      </xsl:if>
</xsl:variable>

<xsl:for-each select="HEADING_ROW[HEADING_ID = $CURRENT_HEADING_ID]">

do something

</xsl:for-each>

这里我无法描述整个图片,但如果我的Current_Heading_ID与HEADING_ID相匹配,那么我想继续使用这个其他的...

我的XML看起来像---

<HEADING_ROW Sort="1">
        <HEADING_ID>10051</HEADING_ID>
        <HEADING_NAME>HEADING 1</HEADING_NAME>
        <HEADING_DESCRIPTION/>
</HEADING_ROW>
<HEADING_ROW Sort="2">
        <HEADING_ID>10050</HEADING_ID>
        <HEADING_NAME>HEADING 2</HEADING_NAME>
        <HEADING_DESCRIPTION>HEADING 2 Descp</HEADING_DESCRIPTION>
</HEADING_ROW>

我知道这是一个非常愚蠢的问题,但我很匆忙并坚持这个问题。任何帮助将不胜感激。

此致

1 个答案:

答案 0 :(得分:0)

这是因为您当前定位在 HEADING_ROW 元素上,并希望获得具有相同HEADING_ID的其他 HEADING_ROW 元素吗?

如果是这样,试试这个

<xsl:for-each select="following-sibling::HEADING_ROW[HEADING_ID = $CURRENT_HEADING_ID]">

或许这个(这会得到所有兄弟姐妹,但也会得到当前的HEADING_ROW)

<xsl:for-each select="../HEADING_ROW[HEADING_ID = $CURRENT_HEADING_ID]">