Книга: XSLT
Модель информационного множества против модели дерева XSLT
Модель информационного множества против модели дерева XSLT
Разборщики XML передают только определенную информацию: как задается основной спецификацией информационного множества (Information Set) XML — которую можно найти по адресу www.w3.org/TR/xml-infoset, в то время как процессоры XSLT придерживаются модели дерева XSLT. Эти модели, а также элементы, считающиеся в них важными, различны, что может привести к проблемам.
Вот, например, два элемента XML, входящие в основное информационное множество, но невозможные в XSLT: примечания и пропущенные ссылки на сущности (ссылки на сущности, которые разборщик XML предпочел не раскрывать). На практике это означает, что даже если разборщик XML передал информацию для этих пунктов, процессор XSLT ничего не сможет с ней сделать. Однако примечания используются редко, и только отдельные разборщики XML генерируют пропущенные ссылки на сущности, поэтому это не является значимой проблемой.
С другой стороны, разборщики XML могут удалить из XML-документов комментарии, о чем вам следует знать, так как в модели XSLT комментарии включаются.
Кроме того, информация об объявлениях DTD не передается от разборщика XML в процессор XSLT (возможно, потому, что W3C планирует более широко использовать схемы XML в XSLT 2.0, хотя пока еще нет официального механизма связывания схем XML с документами XML). Как правило, это не образует проблемы, поскольку проверка документа XML входит в задачи разборщика XML, за исключением одного случая: когда атрибут объявлен с типом ID. В XML с типом ID можно объявить атрибут с любым именем, поэтому процессор XSLT не знает, какие атрибуты принадлежат к этому типу, если только у процессора нет доступа к DTD. Это важно при использовании таблиц стилей, встроенных в документы XML, поскольку в этом случае процессор XSLT должен быть способен распознать, в каком элементе документа содержится таблица стилей, нужная для преобразования документа. В этом случае некоторые процессоры XSLT, например, Saxon, идут дальше рекомендации XSLT и проверяют DTD, если они есть, чтобы узнать, какие атрибуты принадлежат к типу ID.
Еще несколько моментов могут представлять для вас интерес. Например, модель обработки XSLT открывает доступ к префиксам пространств имен во входном дереве, но предоставляет очень небольшие возможности управления ими в выходном дереве, где они обрабатываются автоматически. К тому же, в модели обработки XSLT для каждого узла в дереве определяется базовый URI, представляющий собой URI внешней сущности, от которой был произведен узел. (В рабочем проекте XSLT 1.1 эти возможности были расширены для поддержки спецификации XML Base, как вы увидите ближе к концу этой главы.) Однако в информационном множестве XML базовые URI считаются второстепенными, а это означает, что разборщик XML может не передать эту информацию в процессор XSL.
В общем, вам следует знать, что процессоры XSLT читают документы XML при помощи разборщиков XML, и что совместная работа этих программных единиц не бесшовна. Если вы обнаружите, что некоторая необходимая информация при преобразовании XSLT пропала, следует вспомнить этот момент. Фактически различие между информационным множеством XML и моделью дерева XSLT — это одна из проблем, которую призван исправить XSLT 2.0. Помимо прочего, в XSLT 2.0 должно быть проще восстанавливать ID и ключевую информацию из исходного документа, а также восстанавливать информацию из объявления XML исходного документа — например, версию XML и кодировку.
- Деревья и узлы
- Модель информационного множества против модели дерева XSLT
- Работа с элементами XSLT
- Инструкция обработки
- Элемент
- Элементы таблиц стилей высокого уровня
- Элемент
- Тела шаблонов
- Элемент
- Доступ к значениям узлов
- Поддержка XML Base
- Выбор методов вывода
- Упрощенные таблицы стилей
- Встроенные таблицы стилей
- Элемент
- Элемент
- Элемент
- Преобразование документов XML при помощи Internet Explorer
- Работа с элементами XSLT
- Модель преобразования
- Глава 7 Чего нужно опасаться при моделировании бизнес-процессов. Проектные риски моделирования бизнеспроцессов
- Rational Rose 2000 и UML Визуальное моделирование
- «БОМБЫ» ПРОТИВ «ЭНИГМЫ»
- Операции с множествами узлов
- 4.2. Создание трехмерной модели и построение горизонтальной проекции детали
- Обход дерева
- Построение модели выходов (результатов)
- Использование отдельных процессоров XSLT
- 7.4. Модель системы автоматизированного проектирования защиты информации
- 6.2. Модели оценки бизнес-тренинга