需要 select 多个元素中的唯一一个值
Need to select the only one value from multiple element
我需要在某些条件下从多个元素中获取唯一的一个值
输入XML:
<PlanMaps>
<_PlanMaps>
<PolicyNum>456789</PolicyNum>
</_PlanMaps>
<_PlanMaps>
<PolicyNum>456789</PolicyNum>
</_PlanMaps>
<_PlanMaps>
<PolicyNum>0456789</PolicyNum>
</_PlanMaps>
</PlanMaps>
XSLT 我试过:
<IndexField>
<idxName>Number</idxName>
<idxValue>
<xsl:choose>
<xsl:when test="PlanMaps/_PlanMaps/PolicyNum[not(starts-with(., '0'))]">
<xsl:value-of select="PlanMaps/_PlanMaps/PolicyNum"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="''"/>
</xsl:otherwise>
</xsl:choose>
</idxValue>
</IndexField>
我得到的输出
<idxValue>456789 456789 0456789</idxValue>
预期输出:
<idxValue>456789</idxValue>
这里我必须检查两个条件,一个是如果有多个 <PolicyNum>
具有相同的值,第一个值应该选择,另一个是如果只有一个 <PolicyNum>
和它的值以 0
开头,它应该是空的。
xsl:value-of
应该使用与 xsl:when
.
相同的 xpath
获取节点集中第一个元素的 XPath
(//PlanMaps/_PlanMaps/PolicyNum[not(starts-with(., '0'))])[1]/text()
根据 LMC 的回答,我认为您的代码可以简单地简化为:
<IndexField>
<idxName>Number</idxName>
<idxValue>
<xsl:value-of select="(PlanMaps/_PlanMaps/PolicyNum[not(starts-with(., '0'))])[1]"/>
</idxValue>
</IndexField>
如果只有一个以零开头的值,则不输出任何内容,如果有多个值,则输出第一个不以零开头的值。
我需要在某些条件下从多个元素中获取唯一的一个值
输入XML:
<PlanMaps>
<_PlanMaps>
<PolicyNum>456789</PolicyNum>
</_PlanMaps>
<_PlanMaps>
<PolicyNum>456789</PolicyNum>
</_PlanMaps>
<_PlanMaps>
<PolicyNum>0456789</PolicyNum>
</_PlanMaps>
</PlanMaps>
XSLT 我试过:
<IndexField>
<idxName>Number</idxName>
<idxValue>
<xsl:choose>
<xsl:when test="PlanMaps/_PlanMaps/PolicyNum[not(starts-with(., '0'))]">
<xsl:value-of select="PlanMaps/_PlanMaps/PolicyNum"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="''"/>
</xsl:otherwise>
</xsl:choose>
</idxValue>
</IndexField>
我得到的输出
<idxValue>456789 456789 0456789</idxValue>
预期输出:
<idxValue>456789</idxValue>
这里我必须检查两个条件,一个是如果有多个 <PolicyNum>
具有相同的值,第一个值应该选择,另一个是如果只有一个 <PolicyNum>
和它的值以 0
开头,它应该是空的。
xsl:value-of
应该使用与 xsl:when
.
获取节点集中第一个元素的 XPath
(//PlanMaps/_PlanMaps/PolicyNum[not(starts-with(., '0'))])[1]/text()
根据 LMC 的回答,我认为您的代码可以简单地简化为:
<IndexField>
<idxName>Number</idxName>
<idxValue>
<xsl:value-of select="(PlanMaps/_PlanMaps/PolicyNum[not(starts-with(., '0'))])[1]"/>
</idxValue>
</IndexField>
如果只有一个以零开头的值,则不输出任何内容,如果有多个值,则输出第一个不以零开头的值。