У нас есть входной XML. Мы пытаемся удалить такие элементы, которые имеют пустые и непустые значения. у нас есть <Item>
как повторяющийся элемент. <TermsCode>
имеет пустые и непустые значения для повторяющегося элемента.XSLT: проверьте, пусто ли значение, затем удалите тег
Мы должны удалить пустой тег <TermsCode>
после проверки в XSLT, если он пуст. или если он имеет значение, он должен хранить тег. Аналогично, мы пытаемся написать для каждого элемента, связанного с узлом элемента. если он пуст, то удалите. если нет, то следует сохранить тег в Output XML.
ВХОДА XML
<?xml version="1.0" encoding="UTF-8"?>
<SetupArCustomer>
<Item>
<Key>
<Customer>0039069</Customer>
</Key>
<Name>ABC SOLUTIONS LLC</Name>
<CreditLimit>0.0</CreditLimit>
<PriceCode>WH</PriceCode>
<Branch>NY</Branch>
<TermsCode>00</TermsCode>
</Item>
<Item>
<Key>
<Customer>0039070</Customer>
</Key>
<Name>CCD WHOLESALE NY INC.</Name>
<CreditLimit>0.0</CreditLimit>
<PriceCode>HY</PriceCode>
<Branch>NY</Branch>
<TermsCode/>
</Item>
</SetupArCustomer>
ПРОБОВАЛИ XSLT2.0
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" encoding="Windows-1252" indent="yes" />
<xsl:template xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" match="@xsi:nil[.='true']" />
<xsl:template match="@*|node()">
<xsl:copy copy-namespaces="no">
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Ожидаемый выходной
<?xml version="1.0" encoding="UTF-8"?>
<SetupArCustomer>
<Item>
<Key>
<Customer>0039069</Customer>
</Key>
<Name>ABC SOLUTIONS LLC</Name>
<CreditLimit>0.0</CreditLimit>
<PriceCode>WH</PriceCode>
<Branch>NY</Branch>
<TermsCode>00</TermsCode>
</Item>
<Item>
<Key>
<Customer>0039070</Customer>
</Key>
<Name>CCD WHOLESALE NY INC.</Name>
<CreditLimit>0.0</CreditLimit>
<PriceCode>HY</PriceCode>
<Branch>NY</Branch>
</Item>
</SetupArCustomer>
Благодарности. Я применил к env . он работает для нас. –
NEO