想得到前辈

时间:2019-02-11 10:02:38

标签: xslt

我正在解析XML,如下所示,

<Service>
 <ServiceName>
 <Plans>
 <Plan>
    <PlanNumber>A</PlanNumber>
    ....
  </Plan>
 </Plans>
</Service>

<Service>
<ServieName>
 <Plans>
 <Plan>
    <PlanNumber>B</PlanNumber>
    ....
  </Plan>
 </Plans>
</Service>

我正在遍历for-each Plans/Plan并尝试打印preceding-sibling::Plan/PlanNumber,但我什么都没得到。

我希望它遍历唯一的计划号,因此我在for-each旁边使用了if语句。 <xsl-if test="not(PlanNumber = preceding-sibling::Plan/PlanNumber)">

我没有通过计划编号。

2 个答案:

答案 0 :(得分:0)

在您的示例中,Plan中只有一个PlansPlans中只有一个Service)。这意味着Plan没有兄弟姐妹,而您的尝试preceding-sibling::Plan/PlanNumber什么也没有选择。

要从PlanNumber的上下文中获取前面的Plan,您需要执行以下操作:

../../preceding-sibling::Service/Plans/Plan/PlanNumber

或:

preceding::PlanNumber

答案 1 :(得分:-1)

<xsl:foreach select="Plan">
    <xsl:foreach select="PlanNumber">
        <xsl:if test="position()!=1">
            <xsl:value-of select="preceding-sibling::text()"/>
        </xsl:if>
    </xsl:foreach>
</xsl:foreach>