Я хочу обрабатывать узлы с применением шаблонов, но использовать разные режимы для соответствия правильному шаблону правил для всех узлов в последовательности.Применить шаблоны с различными режимами
XML:
<?xml version="1.0" encoding="UTF-8"?>
<story>
<p class="h1">
<content>heading</content>
<br/>
</p>
<p>
<content>some text</content>
<br/>
<content>more text...</content>
</p>
</story>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="div">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="p">
<xsl:choose>
<xsl:when test="@class='h1'">
<xsl:element name="h1">
<!--apply-tempaltes mode:#default, for br mode:ignore-->
<xsl:apply-templates/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="p">
<!--apply-tempaltes mode:#default-->
<xsl:apply-templates/>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="content" mode="#default">
<xsl:element name="span">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="br" mode="#default">
<xsl:element name="br"/>
</xsl:template>
<xsl:template match="br" mode="ignore"/>
</xsl:stylesheet>
Wanted Выход:
<?xml version="1.0" encoding="UTF-8"?>
<story>
<h1 class="h1"><span>heading</span>
</h1>
<p><span>some text</span>
<br/>
<span>more text...</span>
</p>
</story>
XSLT-версия 2,0. Я знаю, есть другие способы добиться желаемого вывода для этого примера, но я бы хотел использовать атрибуты mode.
Вы не сказали нам, что разыскиваемый выход. Должны ли мы читать ваши мысли? Я понятия не имею, что это значит: _ "apply-tempaltes mode: #default, for br mode: #ignore" _. Вы должны сказать нам, что вы пытаетесь выполнить. – JLRishe
Я хочу знать, если я могу использовать разные режимы для всех элементов в последовательности. '# default' не будет работать, как только я буду использовать режим' ignore'. я мог бы пойти с 'mode =" # all "' для шаблона 'match =" content "'. Я уверен, есть лучшее решение. – Ferestes
Все еще неясно, пожалуйста, расскажите нам об _goal_, а не о режимах. Вы хотите игнорировать (то есть: не копировать в результирующий документ) элементы 'br', если они находятся внутри элемента' p [@class = 'h1'] '? –