我需要在某些條件下從多個元素中獲取唯一的一個值
輸入 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應該為空。
uj5u.com熱心網友回復:
接受 LMC 的回答,我認為您的代碼可以簡單地簡化為:
<IndexField>
<idxName>Number</idxName>
<idxValue>
<xsl:value-of select="(PlanMaps/_PlanMaps/PolicyNum[not(starts-with(., '0'))])[1]"/>
</idxValue>
</IndexField>
如果只有一個以零開頭的值,則不會輸出任何內容,如果有多個值,則將輸出第一個不以零開頭的值。
uj5u.com熱心網友回復:
xsl:value-of應該使用與xsl:when.
XPath 獲取節點集中的第一個元素
(//PlanMaps/_PlanMaps/PolicyNum[not(starts-with(., '0'))])[1]/text()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/464285.html
上一篇:將XML子元素決議為字串
