[英]How to get first occurrence in XML
我有XML數據,其結構如下所示。 我只需要獲取CX.5
值以'TN'開頭的第一個CX.1
值
<PID.3.LST>
<PID.3>
<CX.1>432</CX.1>
<CX.4>BH</CX.4>
<CX.5>TN</CX.5>
<CX.6>BH</CX.6>
</PID.3>
<PID.3>
<CX.1>444</CX.1>
<CX.4>BH</CX.4>
<CX.5>TN</CX.5>
<CX.6>BH</CX.6>
</PID.3>
<PID.3>
<CX.1>8415</CX.1>
<CX.4>SWH</CX.4>
<CX.5>MR</CX.5>
<CX.6>SWH</CX.6>
</PID.3>
<PID.3>
<CX.1>915252936 </CX.1>
<CX.2>9</CX.2>
<CX.4>AUSHIC</CX.4>
<CX.5>MC</CX.5>
</PID.3>
</PID.3.LST>
我想只加載CX.5
值包含'TN'的第一個CX.1
值。
這是我正在使用的XSLT代碼,但它返回所有CX.1
值。
<xsl:variable name="UR" select="CX.5"/>
<xsl:if test="substring($UR,1,2)='TN'">
My ID: <xsl:variable name="URsub" select="substring-after('TN',$UR)"/>
<xsl:value-of select="CX.1"/>
</xsl:if>
換句話說,我需要在XSLT中打破我的for-each
我只需要獲取CX.5值以'TN'開頭的第一個CX.1值
表達你正在尋找的匹配是
//CX.1[starts-with(../CX.5,'TN')][1]
在整個模板中,這看起來像這樣:
<xsl:template match="/">
<xsl:value-of select="//CX.1[starts-with(../CX.5,'TN')][1]" />
</xsl:template>
這個XPath將選擇第一個CX.1
元素,它的兄弟CX.5
元素包含“TN”:
(/PID.3.LST/PID.3[contains(CX.5,"TN")]/CX.1)[1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.