|
| ||||||||||||
| ||||||||||||
14 РасширенияXSLT допускает два типа расширений: элементы расширения и функции расширения. Данная версия XSLT не дает механизм для создания расширений. Поэтому стиль XSLT, который должен быть переносим между различными реализациями XSLT процессора, не должен быть завязан на доступность определенных расширений. XSLT дает механизмы, позволяющие стилю XSLT определить, доступна ли реализация конкретных расширений в XSLT процессоре, осуществляющем обработку этого стиля, и что должно происходить если указанные расширения недоступны. Если авторы стиля XSLT позаботились об использовании таких механизмов, то можно совместить преимущества расширений и работоспособность с любыми реализациями XSLT. 14.1 Элементы расширенияМеханизм элементов расширения позволяет строить пространства имен как пространства имен расширений. Если пространство имен построено как пространство имен расширений и в шаблоне обнаружен элемент с именем из этого пространства, то тогда этот элемент обрабатывается как инструкция, а не как фиксированный конечный элемент. Указанное пространство имен определяет семантику этой инструкции. Замечание: Поскольку элемент, являющийся непосредственным потомком элемента
Пространство имен объявляется пространством имен расширения с помощью атрибута Если XSLT процессору недоступна реализация определенного элемента расширения, функция element-available в ответ на имя этого элемента должна возвращать false. Когда подобный элемент расширения обрабатывается, XSLT процессор должен выполнить для этого элемента откат, как описано в главе [15 Откат]. При этом XSLT процессор не должен фиксировать ошибку только потому, что шаблон содержит элемент расширения, реализация которого оказалась недоступна. Если XSLT процессору доступна реализация конкретного элемента расширения, то в ответ на имя этого элемента функция element-available должна возвращать true. 14.2 Функции расширенияЕсли FunctionName в выражении FunctionCall не является NCName (например, содержит двоеточие), то оно обрабатывается как вызов функции расширения. FunctionName приводится к расширенному имени с помощью деклараций пространства имен, извлеченных из контекста обработки. Если XSLT процессору недоступна реализация функции расширения с указанным именем, то тогда функция function-available в ответ на это имя должна возвращать false. Если в выражении была найдена такая функция расширения и действительно был сделан вызов этой функции расширения, то XSLT процессор должен фиксировать ошибку. Однако XSLT процессор не должен сигнализировать об ошибке только потому, что некое выражение содержит функцию расширения, для которой нет доступной реализации. Если реализация функции расширения с указанным именем доступна XSLT процессору, функция function-available для этого имени должна возвращать true. Если сделан вызов такого расширения, XSLT процессор должен вызвать данную реализацию, передав ей аргументы вызова этой функции. Результат, полученный от вызова реализации, передается как результат вызова функции. Назад | Содержание | Вперед
|
|
CITForum © 1997–2025