Этот код работает так же, как и предыдущий пример, копируя все элементы и атрибуты. С другой стороны, можно вообще обойтись без каких-либо изменений в листинге 3.10, — я могу просто использовать для того, чтобы скопировать весь документ, выбрав корневой узел и скопировав всех его потомков:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
При помощи можно также копировать конкретные узлы и их потомков вместо того, чтобы задавать подстановку *. Например, следующее правило копирует все элементы и их потомков:
По этой причине я могу заменить элемент на элемент :
При помощи элемента можно дать указание процессору XSLT отобразить сообщение и, по выбору, прекратить обработку таблицы стилей. У элемента один атрибут:
• terminate
(необязательный). Значение «yes» прекращает обработку. По умолчанию установлено «no».
Куда на самом деле будет отправлено сообщение, зависит от процессора XSLT. Для процессоров, основанных на Java, сообщение обычно отправляется в выходной поток ошибок Java, которому соответствует экран компьютера, если процессор XSLT был вызван из командной строки. Другие процессоры XSLT могут выводить сообщения во всплывающие окна или в web-страницы, отправляемые в браузеры.
В приведенном ниже листинге 3.12 я прекращаю обработку XSLT, когда процессор XSLT пытается преобразовать элемент в planets.xml
, выводя сообщение " Sorry, DAY information is classified.
" (Извините, информация о параметре «ДЕНЬ» засекречена.).
Листинг 3.12. Применение
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
|
|
|
|
Sorry. DAY information is classified.
Вот результаты применения этой таблицы стилей в Xalan:
C:\planets>java org.apache.xalan xslt.Process -IN planets.xml -XSL message.xsl -OUT planets.html
file:///C:/XSL/messages/message.xsl: Line 49; Column 38;
Sorry. DAY information is classified.
XSLT Error (javax.xml.transform.TransformerException):
Stylesheet directed termination
При помощи элемента можно выводить информацию о том, что происходит при обработке таблицы стилей, что может пригодиться не только для вывода ошибок и предупреждений, но и для отладки таблиц стилей.
Далее в книге будут рассмотрены и другие посвященные шаблонам темы — такие, как вызов именованных шаблонов и использование параметров. В следующей главе мы перейдем к большой и важной теме — созданию образцов выбора, при помощи которых в XSLT можно выбирать, какие узел или узлы вам нужны для работы. Мы уже затрагивали тему работы с образцами выбора, теперь же пора перейти к их систематическому рассмотрению.
Глава 4
Создание образцов выбора
До сих пор материал книги был достаточно очевиден, за исключением одного: несколько загадочных образцов выбора (match pattern). Мы работали с различными образцами выбора, такими как «/PLANETS» в элементах , не предлагая систематического объяснения того, как в действительности работают эти образцы, — как в этом случае:
The Planets Table
.
.
.
В этой главе мы рассмотрим все необходимое, что нужно знать для создания образцов выбора в XSLT. Образцы выбора применяются в элементах , и ; с элементом мы работали с самого начала книги, элемент мы увидим в главе 9 и элемент — в главе 5. В частности, для выбора по образцу у элементов и используется атрибут match
, а у элемента — атрибуты count
и from
.
Образцы выбора можно также применять в атрибуте select
таких элементов, как , , и . Здесь важно отметить один момент: атрибут select
этих элементов обладает большими возможностями, чем атрибуты match
, count
и from
элементов , и , потому что в select
можно использовать полные выражения XPath, а не только образцы выбора.
Образцы выбора являются подмножеством выражений XPath, то есть все образцы выбора являются допустимыми выражениями XPath, но не все выражения XPath являются образцами выбора. Единственные выражения XPath, которые могут быть образцами, — это выражения, возвращающие набор узлов (даже набор, состоящий из одного узла) и использующие пути, которые задают только дочерние узлы или узлы атрибутов.
Образцы выбора определены в самой рекомендации XSLT, в то время как выражения XPath определены в рекомендации XPath (www.w3.org/TR/xpath); тем не менее, эти рекомендации совместимы, потому что все образцы выбора являются одновременно выражениями XPath.
СОЗДАНИЕ ПОЛНЫХ ВЫРАЖЕНИЙ XPATH
В главе 7 «Работа и изучение XPath» показано, как создавать полные выражения XPath. Полные выражения XPath можно применять в XSLT в следующих местах: в атрибуте select элементов , , , , , , и ; в значениях шаблонов атрибутов; в атрибуте test элементов и ; в значении атрибута элемента и в предикатах образцов выбора.
Читать дальше