簡體   English   中英

XSLT 1.0刪除節點

[英]XSLT 1.0 delete nodes

如何刪除某些特定節點?

在我的示例中,我在REF段有很多節點,但是我只想將REF與Qualifier GS一起使用,所有其他節點都應刪除。

<ITEM>
    <ITEM_NUMBER_EN>123456789</ITEM_NUMBER_EN>
    <ITEM_NUMBER_IN>1234</ITEM_NUMBER_IN>
    <ITEM_NUMBER_SA>1234</ITEM_NUMBER_SA>
    <QUANTITY>1</QUANTITY>
    <QUANTITY_UNIT>PCE</QUANTITY_UNIT>
    <LINE_ITEM_NUMBER>1</LINE_ITEM_NUMBER>
    <AMOUNT_DETAILS>
        <QUALIFIER>AAA</QUALIFIER>
        <AMOUNT>1.00</AMOUNT>
        <CURRENCY>EUR</CURRENCY>
    </AMOUNT_DETAILS>
    <REF>
        <QUALIFIER>CR</QUALIFIER>
        <REFERENCE>1234</REFERENCE>
        <ADDITIONAL_INFO/>
    </REF>
    <REF>
        <QUALIFIER>GS</QUALIFIER>
        <REFERENCE>5647</REFERENCE>
        <ADDITIONAL_INFO/>
    </REF>
    <REF>
        <QUALIFIER>LI</QUALIFIER>
        <REFERENCE>1</REFERENCE>
        <ADDITIONAL_INFO/>
    </REF>
    <PACKAGE_DETAILS>
        <!-- ... -->
    </PACKAGE_DETAILS>
</ITEM>

您需要有關我的XML的更多信息嗎?

編輯:輸出應為:

<ITEM>
    <ITEM_NUMBER_EN>123456789</ITEM_NUMBER_EN>
    <ITEM_NUMBER_IN>1234</ITEM_NUMBER_IN>
    <ITEM_NUMBER_SA>1234</ITEM_NUMBER_SA>
    <QUANTITY>1</QUANTITY>
    <QUANTITY_UNIT>PCE</QUANTITY_UNIT>
    <LINE_ITEM_NUMBER>1</LINE_ITEM_NUMBER>
    <AMOUNT_DETAILS>
        <QUALIFIER>AAA</QUALIFIER>
        <AMOUNT>1.00</AMOUNT>
        <CURRENCY>EUR</CURRENCY>
    </AMOUNT_DETAILS>
    <REF>
        <QUALIFIER>GS</QUALIFIER>
        <REFERENCE>5647</REFERENCE>
        <ADDITIONAL_INFO/>
    </REF>
    <PACKAGE_DETAILS>
        <!-- ... -->
    </PACKAGE_DETAILS>
</ITEM>

我目前的嘗試是這樣的:

<!--delete REF node-->
<xsl:template match="REF">
  <xsl:for-each select ="./REF">
    <xsl:if test="./QUALIFIER='LI'">
    </xsl:if>
  </xsl:for-each>
  <!--copy all other nodes-->
  <xsl:apply-templates select="@* | node()"/>
</xsl:template>

目前,我唯一的解決方案是用:

<xsl:template match="REF[QUALIFIER='CR']"/>

<xsl:template match="REF[QUALIFIER='LI']"/>

您要刪除限定符不是“ GS”的所有<REF>節點。

<xsl:template match="REF[@QUALIFER != 'GS']" />

除了身份模板(您似乎已經擁有)之外,這就是所有必要的步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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