У меня есть преобразование XSL со следующим требованием: Зеркально точно такой же XML, исключая элемент DocumentList.XSL exclude not working
Следующий мой код. Я получил это решение от: xslt match all nodes except a specific one
Моего кода:
<?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" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="@*|node()[not(self::DocumentList)]" name="identity">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- overwrite the default template -->
<xsl:template match="DocumentList">
</xsl:template>
</xsl:stylesheet>
Когда я бег моего преобразования, отображается то же XML со всеми элементами. Поэтому мой вопрос заключается в том, нужно ли мне указывать путь в матче = «Что не хватает ей?
У моего исходного XML есть другие пространства имен, которые я декларировал в элементе stylesheet, но для конфиденциальности здесь не воспроизводятся. ..
Только pos ting код стилей не позволяет нам воспроизвести проблему, поэтому вам нужно показать минимальные, но полные образцы XML, XSLT, вывести и вывести данные, которые вы хотите, чтобы мы могли сначала воспроизвести, а затем устранить проблему. Если ваши реальные данные не могут быть показаны, то создайте некоторые, но XML и XSLT должны совпадать, когда дело доходит до имен элементов и пространств имен. –
Эта проблема, скорее всего, связана с пространствами имен, которые вы должны объявить в корне вашей таблицы стилей и использовать в 'match =" [...] "'. Также возможно использовать объявление 'xpath-default-namespace =" [...] "'. – potame
Например, http://xsltransform.net/3NJ38YS имеет вход с элементом 'DocumentList' и минимальным XSLT для его удаления и работает отлично. –