Как я могу удалить некоторые конкретные узлы?
В моем примере у меня много узлов в сегменте 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']"/>