Здесь есть две проблемы: во-первых, вы не хотите указывать префикс пространства имен, а во-вторых, вы не хотите, чтобы в исходном документе были пробелы, влияющие на ваш вывод. Давайте обсудим их отдельно.
Использование префикса пространства имен:
Краткий ответ - нет - вы не можете написать шаблон XSL, который соответствует элементам в определенном пространстве имен без указания такого пространства имен с помощью префикса. В вашем первом XSLT вы могли прочитать определение шаблона, например «Я хочу выбрать узел с именем Thing, у которого нет пространства имен » , тогда как вы действительно хотите сказать: » Я хочу выбрать узел с именем Thing, который имеет пространство имен http://My/Project.xsd". Так работает спецификация XPath 1.0 (подробнее см. в этой статье ).
Избавление от интервала:
Используйте инструкцию <xsl:strip-space elements="*"/>
в начале таблицы стилей, чтобы указать, что вы не хотите, чтобы пробелы из всех исходных элементов сохранялись в выходном документе. Если вы хотите сохранить некоторые из них, используйте также <xsl:preserve-spaces elements="myNode">
.