Шаблон никогда не создается "сам по себе".
Вместо этого шаблон применяется только к списку узлов, который указан expression
в инструкции <xsl:apply-templates select="expression"/>
.
Также обратите внимание, что
<xsl:template match="//object[@type='set']">
эквивалентно;
<xsl:template match="object[@type='set']">
снова - шаблон не выбрать it соответствует .
Одно из решений этой проблемы :
Использование:
<xsl:apply-templates select="//object[@type='set']"/>
Все преобразование становится :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="//object[@type='set']"/>
</body>
</html>
</xsl:template>
<xsl:template match="object[@type='set']">
<p>
<xsl:value-of select="name"/>
</p>
</xsl:template>
</xsl:stylesheet>
, и оно дает желаемый, правильный результат :
<html>
<body>
<p>Test1</p>
<p>Test11</p>
<p>Test111</p>
<p>Test2</p>
<p>Test22</p>
<p>Test3</p>
</body>
</html>