次のことは単純か不可能のどちらかであるはずですが、今のところ方法がわかりませんので、お尋ねします。私の XSLT には、要素を生成するテンプレートがあり、それを再度変換する必要があります。テンプレートが、元の入力で変換の対象となる要素を出力する場合は常に、再度変換する必要があります。これにより、無限ループが可能になりますが、テンプレートを慎重に設計することで回避する必要があります。例として考えてみましょう:
入力.xml
<?xml version="1.0" encoding="utf-8" ?>
<example>
<a />
<b />
</example>
変換.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform 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="a">a</xsl:template>
<xsl:template match="b">
<B>b <a /></B>
</xsl:template>
</xsl:transform>
現在の出力.xml
<?xml version="1.0"?>
<example>
a
<B>b <a/></B>
</example>
望ましい出力.xml
<?xml version="1.0"?>
<example>
a
<B>b a</B>
</example>
1回の変換でこれを達成するための最良の解決策は何ですか?