我正在解析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)">
我没有通过计划编号。
答案 0 :(得分:0)
在您的示例中,Plan
中只有一个Plans
(Plans
中只有一个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>