簡體   English   中英

如何在XML中首次出現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM