如何获取可能在另一个节点中的进程项?

时间:2016-12-12 19:51:59

标签: xml xslt

使用示例XML:

<orders>
    <order>
        <items>
            <item>1</item>
            <item>2</item>
        </items>
    </order>
    <order>
        <items>
            <item>3</item>
            <item>4</item>
        </items>
    </order>
</orders>

我目前正在制作一个基本上达到顶级水平的电子表格。我通过应用模板执行此操作,我有

<apply-templates match="orders/order/items/item"><!-- sorts --></apply-templates>

我想在项目中的某个属性发生变化时应用标题,我如何获得上一个项目?

对于item4,我想我可以使用preceding-sibling::item来获取item3,但如果我的主动节点是item3,我将如何获得item2?

我目前正在假设我需要将其设置为带有选择的变量,例如:

<xslt:variable name="previousItem">
    <xslt:choose>
        <xslt:when test="count(preceding-sibling::item)">
            <xslt:value-of match="preceding-sibling::item" />
        </xslt:when>
        <xslt:otherwise>
            <!-- some logic here -->
        </xslt:otherwise>
    </xslt:choose>
</xslt:variable>

1 个答案:

答案 0 :(得分:3)

试试preceding::item[1]。它仅选择在当前元素之前出现的项目。