Вот простой пример.
Вот мой 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 используется с двумя 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, которые не должны использовать этот режим шаблона ...
Что мне делать?
Спасибо