次のような入力があるとしましょう。
<country>
<name>countryname</name>
<capital>captialname</capital>
<population>19000</population>
</country>
xslを使用して上位コードを言うことができるように、要素名を変換しています。国の子要素が発生しない場合があります。したがって、次のように変換を記述できます。
<xsl:template match="country">
<xsl:element name="COUNTRY">
<xsl:apply-templates select="name" />
<xsl:apply-templates select="capital" />
<xsl:apply-templates select="population" />
</xsl:element>
</xsl:template>
<xsl:template match="name">
<xsl:element name="NAME">
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
<xsl:template match="capital">
<xsl:element name="CAPITAL">
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
<xsl:template match="population">
<xsl:element name="POPULATION">
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
または私は次のようにそれを行うことができます。
<xsl:template match="country">
<xsl:element name="COUNTRY">
<xsl:if test="name">
<xsl:element name="NAME">
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
<xsl:if test="capital">
<xsl:element name="CAPITAL">
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
<xsl:if test="population">
<xsl:element name="POPULATION">
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
</xsl:element>
どちらの方法でメモリの使用量が少なくなるのだろうと思っています。私が持っている実際のコードは、テンプレート内の 7 レベルの深さにあります。したがって、私が知る必要があるのは、単純な要素にテンプレートを使用しないと、メモリ使用量が改善されるということです。