<storybody>
XSLT でこれを行うには、要素を除いて、基本的な恒等変換だけが必要です。
このようなもの:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="storybody">
<body>
<xsl:apply-templates select="@*|node()"/>
</body>
</xsl:template>
</xsl:stylesheet>
編集
「ID 変換を使用したくありません。むしろ、ドキュメント内の 1 つの要素で ID 変換を使用する必要があります」というコメントを読みましたが、何が必要かわかりません。おそらく、ドキュメントの残りの部分の変換は問題ありませんが、この要素に問題がありますか? その場合、すでに書いたものに加えて、私の回答の 2 番目のテンプレートのみを使用する必要があります。
メッセージの 2 番目の部分は、マークアップで部分的に失われていましたが、現在は修正されており、見落としていました。<URI>
要素を<a>
同様に変更するには、別のテンプレートを追加する必要があります。ref
元の属性をに変更すると仮定するとhref
、2 つを合わせると次のようになります。
<xsl:template match="storybody">
<body>
<xsl:apply-templates select="@*|node()"/>
</body>
</xsl:template>
<xsl:template match="storybody//URI">
<a>
<xsl:attribute name="href">
<xsl:value-of select="@ref" />
</xsl:attribute>
</a>
</xsl:template>
あなたの意図がこれとは異なるものであった場合は、明確にしてください。さらにお手伝いします.