См. Разница 1,0 против 2,0 . Этот вопрос решен, но для меня все еще остается загадкой, что вызвало проблему в первую очередь.
Теперь я могу что-то найти, но мне нужна помощь, чтобы понять, что происходит.
Я упростил ввод XML до
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Manager>
<Employee grade="9"/>
<Employee grade="8"/>
</Manager>
<Manager>
<Employee grade="9"/>
<Employee grade="8"/>
<Employee grade="4"/>
</Manager>
</root>
Таблица стилей, которую я применяю для этого ввода,
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<root>
<xsl:apply-templates select="root/Manager"/>
</root>
</xsl:template>
<xsl:template match="Manager">
<test><xsl:value-of select="Employee/@grade"/></test>
</xsl:template>
</xsl:stylesheet>
Выход
<?xml version="1.0" encoding="UTF-8"?>
<root>
<test>9</test>
<test>9</test>
</root>
Но, запустив преобразование в режиме XSLT 2.0 (измените таблицу стилей / @ version на "2.0"), вы получите
<?xml version="1.0" encoding="UTF-8"?>
<root>
<test>9 8</test>
<test>9 8 4</test>
</root>
Интересно, какая именно разница в XSLT 1.0 и XSLT 2.0 вызывает это?