Так как все остальные диагностировали проблему с пространством имен и нашли решение, пожалуйста, обратитесь к ответам, чтобы исправить ваш код. Однако я бы хотел предложить вам что-то еще, кроме исправления пространства имен . Его использование contains() function
.. Я знаю, что в данном случае это бесполезно, но просто для того, чтобы делиться знаниями, я пишу это решение:)
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="node()[contains(name(),'DescriptionOfProposal')]">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
Приведенный выше код никогда не заботился о том, какое пространство имен вы используете в XML-файле:)
Это альтернатива этому ..
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="node()[parent:: node()[contains(name(),'DescriptionOfProposal')]]"/>
</xsl:stylesheet>
Вы можете использовать любой из них :)
РЕДАКТИРОВАТЬ: второй метод наименее предпочтителен из-за обратных осей :)
Этот метод добавлен по предложению Димитра ...
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="node()[local-name() = 'DescriptionOfProposal']">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>