ниже document_1.xml
<products>
<product>
<name>Pen</name>
<Quantity>10</Quantity>
</product>
<product>
<name>Pencil</name>
<Quantity>20</Quantity>
</product>
<product>
<name>Bag</name>
<Quantity>25</Quantity>
</product>
</products>
и document_2.xml
- это
<products>
<product>
<name>Pen</name>
<Quantity>30</Quantity>
</product>
<product>
<name>Pencil</name>
<Quantity>5</Quantity>
</product>
<product>
<name>Bag</name>
<Quantity>2</Quantity>
</product>
</products>
и document.xml
- это
<products>
</products>
Ниже мой xsl, я имел обыкновение соединять document_1.xml
и document_2.xml
с document.xml
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="ns">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="kProdByName" match="product" use="name"/>
<xsl:template match="products">
<xsl:copy>
<xsl:variable name="msNodes">
<xsl:apply-templates select="document('document_1.xml')/*/product|document('document_2.xml')/*/product">
<xsl:sort select="Quantity" data-type="number"/>
</xsl:apply-templates>
</xsl:variable>
<xsl:apply-templates select="ns:node-set($msNodes)/product [generate-id() = generate-id(key('kProdByName', name)[1]) ]"/>
</xsl:copy>
</xsl:template>
<xsl:template match="product">
<product>
<xsl:for-each select="key('kProdByName', name)">
<xsl:if test="position() = 1">
<xsl:copy-of select="node()"/>
</xsl:if>
</xsl:for-each>
</product>
</xsl:template>
</xsl:stylesheet>
Выход выше xsl составляет
<products>
<product>
<name>Bag</name>
<Quantity>2</Quantity>
</product>
<product>
<name>Pencil</name>
<Quantity>5</Quantity>
</product>
<product>
<name>Pen</name>
<Quantity>10</Quantity>
</product>
</product>
здесь мне нужно удалить узел <Quantity>
из вывода, используя xslt 1.0
мне нужен вывод, как показано ниже
<products>
<product>
<name>Bag</name>
</product>
<product>
<name>Pencil</name>
</product>
<product>
<name>Pen</name>
</product>
</product>