これは単純なケースです。
ここに私のXMLがあります:
<?xml version="1.0" encoding="utf-8" ?>
<dogs>
<dog type="Labrador">
<Name>Doggy</Name>
</dog>
<dog type="Batard">
<Name>Unknown</Name>
</dog>
</dogs>
この XML は 2 つの Xslt で使用されます。これは一般的なものです:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="text"/>
<xsl:template match="dogs">
<xsl:text>First template </xsl:text>
<xsl:apply-templates select="." mode="othertemplate" />
</xsl:template>
</xsl:stylesheet>
これは子のものです:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:include href="transform.xslt"/>
<xsl:template match="dogs" mode="othertemplate">
<xsl:text>		Other template</xsl:text>
</xsl:template>
</xsl:stylesheet>
子には共通のもの (transform.xslt と呼ばれる) が含まれます。
子を実行すると、期待される結果が得られます。
First template
Other template
一般的なものを実行すると、次の奇妙な結果が得られます。
First template
Doggy
Unknown
一般的なものは、モード「othertemplate」でテンプレートを適用します。このモードは、子 xslt にのみ含まれる場合があります。
モードが「othertemplate」のテンプレートがない場合は、何も出力しないでください。
このテンプレート モードを使用する必要がないすべての xslt ファイルに、本文が空のモード「othertemplate」のテンプレートを含めたくありません...
私は何をすべきか?
ありがとう