Я работаю над XSLT, который должен копировать весь XML, поддерживая ту же структуру и отфильтровывая некоторые узлы на основе условия.
в приведенном ниже примере мне нужно хранить только те узлы, где IsBusinness =Y и удалите узлы, в которых отсутствует тег IsBusiness.
<CompanyTypes>
<Parent1>
<ChildNode1>Test</ChildNode1>
<ChildNode2>Test</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
<IsBusiness>N</IsBusiness>
</CompanyType>
</Parent1>
<Parent1>
<ChildNode1>Test1</ChildNode1>
<ChildNode2>Test</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
<IsBusiness>Y</IsBusiness>
</CompanyType>
</Parent1>
<Parent1>
<ChildNode1>Test3</ChildNode1>
<ChildNode2>Test9</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
</CompanyType>
</Parent1>
</CompanyTypes>
желаемый вывод
<CompanyTypes>
<Parent1>
<ChildNode1>Test1</ChildNode1>
<ChildNode2>Test</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
<IsBusiness>Y</IsBusiness>
</CompanyType>
</Parent1>
</CompanyTypes>
Я попробовал следующий код, но не смог удалить родительские теги, когда IsBusiness отсутствует.
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Parent1[CompanyType/IsBusiness != 'Y']"/>