我有XML数据,其结构如下所示。我只需要获取CX.1
值CX.5
的第一个<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>
值,以及&#39; TN&#39;
CX.1
我只想加载CX.5
值包含的CX.1
值&#39; TN&#39;。
这是我正在使用的XSLT代码,但它会返回所有<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>
值。
0\/\3\0
换句话说,我需要在XSLT中打破我的for-each
答案 0 :(得分:2)
我只需要获取第一个CX.1值,CX.5值以&#39; TN&#39;
开头
表示您正在寻找的匹配是
//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>
答案 1 :(得分:1)
此XPath将选择第一个CX.1
元素,其兄弟CX.5
元素包含“TN”:
(/PID.3.LST/PID.3[contains(CX.5,"TN")]/CX.1)[1]