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