"【XSLT】ノードをコピーするには③"で使用したXSLTスタイルシートで、xsl:copyの要素内容指定の順番を入れ替えてみる。と、得られる結果文書はまったく異なったものとなる。
ソース文書:
XSLTスタイルシート:
変換結果:
このとおり、ソースXML文書そのものが得られている。したがって、xsl:attributeによる属性の追加部分がまったく処理されないことがわかる。うーん。不思議だ。。。
【XSLTプロセッサ】XALAN 2.7.0 / msxsl
【OS】Windows XP Professional Edition + SP2
ソース文書:
<?xml version="1.0"?> <First order="1st"> <Second order="2nd">2nd element</Second> </First> |
XSLTスタイルシート:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" encoding="UTF-8"/> <xsl:template match="node()|@*"> <xsl:call-template name="copy"/> </xsl:template> <xsl:template name="copy"> <xsl:copy> <xsl:apply-templates select="node()|@*" /> <xsl:attribute name="count">1</xsl:attribute> </xsl:copy> </xsl:template> </xsl:stylesheet> |
変換結果:
<?xml version="1.0" encoding="UTF-8"?> <First order="1st"> <Second order="2nd">2nd element</Second> </First> |
このとおり、ソースXML文書そのものが得られている。したがって、xsl:attributeによる属性の追加部分がまったく処理されないことがわかる。うーん。不思議だ。。。
【XSLTプロセッサ】XALAN 2.7.0 / msxsl
【OS】Windows XP Professional Edition + SP2