首页 > 解决方案 > XML:以最佳方式定义变量

问题描述

从相同的输入我对相同的元素有不同的xpath(除了 1 个元素,它几乎完全相同的路径,见下文)

我的逻辑取决于元素“类型”(在我的代码中定义)

XSLT 1.0

<xsl:variable name="date">
<xsl:choose>
<xsl:when test="$typology='A' or $typology='B' ">
<xsl:value-of select="/Header/info/data/Body/basketAB/date"/>
</xsl:when>
<xsl:when test="$typology='C' or $typology='D' or $typology='E'">
<xsl:value-of select="/Header/info/data/Body/basketCDE/date"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'CheckPath'"/>
</xsl:otherwise>
</xsl:choose>

如何避免使用选择 + 多个路径并仅从 1 个路径获取“日期

标签: xmlxsltxslt-1.0

解决方案


我会避免使用后代轴并使用更明确的路径:

<xsl:variable name="date" select="/Header/info/data/Body/*/date"/>

这是假设输入不能同时包含basketABandbasketCDE元素(这一点在您的问题中并不清楚,但否则这个和当前接受的答案都不起作用)。


如果上述假设结果不正确,您可以这样做:

<xsl:variable name="date" select="/Header/info/data/Body/*[contains(name(), $typology)]/date"/>

推荐阅读