ここに問題があります。複数のタグが含まれているxmlファイルがあり、誰がタグを作成するかによって、任意の順序になる可能性があります。タグを元の順序に保ちながら、スタイルを設定するためにxlsファイルを作成する必要があります。xmlは次のとおりです。
<content>
<h>this is a header</h>
<p>this is a paragraph</p>
<link>www.google.com</link>
<h> another header!</h>
</content>
XSLT は、そうするように指示されない限り、要素を独自に並べ替えることはありません。要素を一致させ、それらを他の要素に置き換えると、見つけた順序で処理されます。
単純に要素を HTML 要素に置き換えたい場合は、必要な HTML 要素を出力する各要素に対応するテンプレートを作成するだけです。たとえば、h要素をh1要素に置き換えるには、次のようにします。
<xsl:template match="h">
<h1>
<xsl:apply-templates select="@*|node()"/>
</h1>
</xsl:template>
h1要素は、元のドキュメントでh要素があった位置に出力されます。ここに完全な XSLT があります
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:template match="content">
<body>
<xsl:apply-templates select="@*|node()"/>
</body>
</xsl:template>
<xsl:template match="h">
<h1>
<xsl:apply-templates select="@*|node()"/>
</h1>
</xsl:template>
<xsl:template match="link">
<a href="{text()}">
<xsl:apply-templates select="@*|node()"/>
</a>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
サンプル ドキュメントに適用すると、次のように出力されます。
<body>
<h1>this is a header</h1>
<p>this is a paragraph</p>
<a href="www.google.com">www.google.com</a>
<h1> another header!</h1>
</body>