Я пытаюсь «убрать» узлы из xml, где одно из значений атрибута = 0 (количество).Мой ввод xml:
<?xml version="1.0" encoding="utf-16"?>
<StockAdjustments xmlns="http://example.com/IWS/StockAdjustments">
<StockAdjustment Article="VL04604" Client="BHP" Status="PAXD" Unit="M2" Quantity="-96" ReasonCode="TELVERSCHI" Batch="VK00427062" HostLocation="BHP" />
<StockAdjustment Article="VL04604" Client="BHP" Status="" Unit="M2" Quantity="0" ReasonCode="TELVERSCHI" Batch="VK00427062" HostLocation="BHP" />
</StockAdjustments>
Запрошенный / ожидаемый результат:
<?xml version="1.0" encoding="utf-16"?>
<StockAdjustments xmlns="http://example.com/IWS/StockAdjustments">
<StockAdjustment Article="VL04604" Client="BHP" Status="PAXD" Unit="M2" Quantity="-96" ReasonCode="TELVERSCHI" Batch="VK00427062" HostLocation="BHP" />
</StockAdjustments>
После нескольких часов борьбы с пространствами имен как нубом я "создал" следующий xslt:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:iws="http://example.com/IWS/StockAdjustments"
xmlns="http://example.com/IWS/StockAdjustments"
excluxxde-result-prefixes="iws">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/iws:StockAdjustments/iws:StockAdjustment[@Quantity != '0']">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Что дает мне
<?xml version="1.0" encoding="UTF-8"?>
<StockAdjustment xmlns="http://example.com/IWS/StockAdjustments">VL04604BHPPAXDM2-96TELVERSCHIVK00427062BHP</StockAdjustment>
У меня такое ощущение, что я почти на месте, что мне нужно, чтобы получить требуемый результат?
Майк
[ОБНОВЛЕНИЕ С РЕШЕНИЕМ] Это правильный xslt для моей «проблемы» благодаря Майклу
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:iws="http://example.com/IWS/StockAdjustments">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/iws:StockAdjustments">
<xsl:copy>
<xsl:copy-of select="iws:StockAdjustment[@Quantity != 0]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>