XSLT
Шрифт:
Обратите
В этом случае я воспользовался преимуществом правил по умолчанию для шаблона. Ниже приведены правила для каждого вида узлов, которые будут применены, если не задать правило для узла явно:
• Корневой узел. По умолчанию вызывается
• Узлы элементов. По умолчанию вызывается
• Узлы атрибутов. Копирует в результирующий документ значение атрибута, однако копирует его как текст, но не как атрибут;
• Текстовые узлы. Копирует в результирующий документ текст;
• Узлы комментариев. Нет обработки XSLT, ничего не копируется;
• Узлы инструкций обработки. Нет обработки XSLT, ничего не копируется;
• Узлы пространств имен. Нет обработки XSLT, ничего не копируется.
Наиболее важное правило по умолчанию применяется к элементам и может быть выражено следующим образом:
Это правило приведено здесь только для гарантии того, что каждый элемент, от корня и ниже, будет обрабатываться при помощи <xsl:apply-templates/>, если не предоставить другого правила, которое перекроет правило по умолчанию.
Правило по умолчанию для текстовых узлов можно выразить следующим образом: функция XSLT
Правило
по умолчанию того же вида применяется к атрибутам, которые добавляются в выходной документ при помощи следующего правила, где выражение "@*" выбирает любой атрибут:По умолчанию инструкции обработки не вставляются в выходной документ, поэтому их правило по умолчанию можно выразить просто при помощи следующей функции-инструкции обработки XSLT, которая выбирает инструкции обработки (как мы увидим в главе 8):
То же верно для комментариев — их правило по умолчанию может быть выражено при помощи функции XSLT
Подведем итоги рассмотрения правил по умолчанию: если вообще не задать никаких правил, все разбираемые символьные данные входного документа будут вставлены в выходной документ. Вот как выглядит таблица стилей, в которой не задано никаких явных правил:
А вот результат применения этой таблицы стилей к
ПРАВИЛА ПО УМОЛЧАНИЮ И INTERNET EXPLORER
Одна из проблем при работе с XSLT в Internet Explorer 5.5 или младше состоит в том, что браузер не предоставляет никаких правил по умолчанию. Необходимо задавать все правила самостоятельно, если только не установлен процессор MSXML3 в режиме замены (подробнее см. главу 2) или вы не обновили браузер до Internet Explorer 6.0.
Кроме того, узлы-разделители исходного документа сохраняются, поэтому можно считать, что следующее правило также является правилом по умолчанию:
Удаление содержимого
Если ваше правило для узла не работает, то есть оно пусто, содержимое выбранного узла не будет скопировано в выходной документ. Таким способом при создании выходного документа можно выборочно удалять содержимое из исходного документа.