Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППТС-2 / Лекции / Lect4-07.doc
Скачиваний:
7
Добавлен:
12.05.2015
Размер:
332.29 Кб
Скачать

5.3.4.4.3. Использование сущностей

Поскольку преобразования XSLT являются документами XML, можно воспользоваться средствами XMLдля модульной организации данных. Час­ти преобразований можно просто вынести во внешние документы ивклю­чать в документ в виде сущности.

Пример включения внешнего преобразования как сущности:

<!DOCTYPE xsl:stylesheet [

<!ENTITY extStyle SYSTEM "ext.xsl">

]>

<xsl:stylesheet

version="2.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

&extStyle;

</xsl:stylesheet>

В этом примере содержимое файлаext.xslбудет вставлено в преобразование вместо ссылки на сущность.

5.3.4.4.4. Импорт схем

Для процессоров XSLTс использованием схемы для идентификации компонент схемы используется элемент-объявление xsl:import-schema, который имеет следующий синтаксис:

<xsl:import-schema

namespace="ссылка-на URI"

schema-location="ссылка-на-URI"

>

<!--

Содержимое: xs:schema

-->

</xsl:import-schema>

Необязательный атрибут namespaceзадает ссылку на пространство имен для импортируемых компонент схемы, а необязательный атрибутschema-location задает ссылку на схему.

В объявлении import-schemaв качестве содержимого элемента может быть задана схема с корневым элементомxs:schema(в этом случае атрибутschema-locationзадавать не надо).

Примеры использования элемента xsl:import-schema:

1. Вызов внешней схемы:

<xsl:import-schema namespace="xs"

schema-location="http://mysyte.org/schemas/schema1.xs">

2. Создание пользовательского простого типа по перечислению на основе типаxs:string:

<xsl:import-schema>

<xs:schema targetNamespace="http://localhost/RGBColor"

xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:simpleType name="local:RGBColor">

<xs:restriction base="xs:string">

<xs:enumeration value="red"/>

<xs:enumeration value="green"/>

<xs:enumeration value="blue"/>

</xs:restriction>

</xs:simpleType>

</xs:schema>

</xsl:import-schema>

5.3.5. Совместное использование преобразований и документовXml

Включение преобразования в документ XMLвыполняется с помощью рассмотренной ранее инструкции по обработкеxml-stylesheet, в которой для атрибутаtypeзадается значение "text/xsl".

Инструкция xml-stylesheetможет быть включена только в пролог доку­мента, то есть она должна предшествовать корневому элементу.

Пример включения файла преобразования в документ XML:

<?xml-stylesheet type="text/xsl" href="message.xsl"?>

Включение операций преобразования, содержащихся в файле message.xsl, в документmessage.xml.

Если преобразование документа выполняется в режиме командной строки одним из процессоров XSLT, то инструкциюxml-stylesheetв документеXMLможно не задавать.

Преобразование XSLTчаще всего является самостоятельным документомXML. Однако преобразование может встроено и в сам документ XML, для которого выполняется преобразование.

В этом случае в преобразовании (элементе xsl:stylesheetилиxsl:transform) внутри документа должен быть обязательно задан атрибутid, а в инструкцииxml-stylesheetв атрибуте hrefзадается (с префиксом "#") значение атрибутаidпреобразования.

Поскольку элемент xsl:stylesheetвключен в преобразуемый документ, он также подвергнется преобразованию. Для того чтобы избежать этого, в пре­образование включается правило шаблона, которое указывает, что эле­ментыxsl:stylesheetследует игнорировать:

<xsl:template match="xsl:stylesheet"/>

Правила шаблона будут рассмотрены ниже.

Пример включения преобразования в преобразуемый документ:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="#trans"?>

<email-folder>

<xsl:stylesheet

version="2.0"

id="trans"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="xsl:stylesheet"/>

</xsl:stylesheet>

</email-folder>

Хотя возможность непосредственного включения преобразования в документ XMLи определена в спецификации языкаXSLT, ее поддерживают пока немногие процессорыXSLT.

Соседние файлы в папке Лекции