Скажем, у меня есть файл XML, который выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<Project xmlns="http://My/Project.xsd">
<Thing Name="test"/>
</Project>
И мой XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" xmlns="http://My/Project.xsd">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:template match="Thing">
<xsl:value-of select="@Name"/>
</xsl:template>
</xsl:stylesheet>
Результатом является [NewLine][Tab][NewLine], который соответствует интервалу XML-файла.
Если я изменю свой XSLT на: (добавлен префикс)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" xmlns:N="http://My/Project.xsd">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:template match="N:Thing">
<xsl:value-of select="@Name"/>
</xsl:template>
</xsl:stylesheet>
Результатом является [NewLine][Tab]test[NewLine], который снова соответствует интервалу XML-файла, но включает значение атрибута «Имя».
Мой ожидаемый результат просто test. Никаких новых строк, никаких вкладок — он вообще не должен соответствовать формату XML-файла.
Я хочу написать XML и XSLT без использования префиксов. Как я могу сделать этот вывод тем, что я ожидаю?