0

我正在尝试将 IF 语句插入到现有的 FOR-EACH 循环中,以在它与来自另一个节点的变量匹配时做一些稍微不同的事情(我想要的节点实际上是它的父节点的兄弟 - 如果这有意义!?)。

该值是一个简单的整数。我基本上想说:如果位置等于变量号那么做XXXX。

这是 XSLT,我只能使用 v1.0 而不是 2.0。

<xsl:for-each select="/Properties/Data/Datum[@ID='ID1']/DCR[@Type='accordion_tab']/accordion_tab/sections">
<h3 class="accordionButton">
<xsl:if test="position()='openpane value to go here'">
    <xsl:attribute name="class">
    <xsl:text>new text</xsl:text>
    </xsl:attribute>
</xsl:if>
</xsl:for-each>

我的 XML 提取在这里:

<sections>
<title>title</title>
<text>some text</text>
</sections>
<openpane>2</openpane>
4

1 回答 1

1

你没有在你的问题中说清楚,但我假设你迭代循环中的sections元素for-each。从for-each循环中,您可以openpane通过当前元素的父元素到达该sections元素:

<xsl:for-each select="sections">
    <xsl:if test="position() = ../openpane">
        ...
    </xsl:if>
</xsl:for-each>

您还可以先定义一个引用该openpane元素的变量:

<xsl:variable name="openpane" select="openpane"/>
<xsl:for-each select="sections">
    <xsl:if test="position() = $openpane">
        ...
    </xsl:if>
</xsl:for-each>
于 2013-02-23T11:36:29.890 回答