ルート要素にデフォルトの名前空間属性がある場合とない場合では、xslt の動作に独特の違いがありました。
なぜこのような違いが生じるのか不思議です。
XML入力は
<root>
<content>xxx</content>
</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" indent="yes"/>
<xsl:template match="/">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>
<xsl:template match="content">
<w>x</w>
</xsl:template>
</xsl:stylesheet>
結果は予想通り
<?xml version="1.0" encoding="UTF-8"?>
<root>
<w>x</w>
</root>
しかし、同じ変換を適用すると
<root xmlns="http://test.com">
<content>xxx</content>
</root>
結果は異なり、デフォルト テンプレート (テキスト ノード値 'xxx' を効果的に出力します) の適用に基づいています。
<?xml version="1.0" encoding="UTF-8"?>
<root>xxx</root>
添加
このケースでこれが予期される動作である場合content
、2 番目のケースで要素に一致するために必要な一致属性値は何ですか?