» » » » Стивен Холзнер - XSLT


Авторские права

Стивен Холзнер - XSLT

Здесь можно скачать бесплатно "Стивен Холзнер - XSLT" в формате fb2, epub, txt, doc, pdf. Жанр: Интернет, издательство Питер, год 2002. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Стивен Холзнер - XSLT
Рейтинг:
Название:
XSLT
Издательство:
Питер
Жанр:
Год:
2002
ISBN:
5-94723-271-5
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "XSLT"

Описание и краткое содержание "XSLT" читать бесплатно онлайн.



Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.

Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.

Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике






    <TD>58.65 days</TD>

   </TR>

   <TR>

    <TD>Venus</TD>

    <TD>.815(<I>Very</I> heavy)</TD>

    <TD>3716 miles</TD>

    <TD>116.75 days</TD>

   </TR>

   <TR>

    <TD>Earth</TD>

    <TD>1(<I>Very</I> heavy)</TD>

    <TD>2107 miles</TD>

    <TD>1 days</TD>

   </TR>

  </TABLE>

 </BODY>

</HTML>

УСОВЕРШЕНСТВОВАНИЯ В XSLT 2.0

Вопрос приоритета шаблонов должен быть учтен в XSLT 2.0. В частности, W3C рассматривает возможность добавления нового элемента с предварительным названием <xsl:next-match/>, который позволит выбирать для шаблона второй лучше всего подходящий элемент.

О приоритетах полезно знать еще одно: если двум шаблонам удовлетворяет один и тот же узел, и этим шаблонам не были присвоены приоритеты, процессор XSLT выберет шаблон с более узким правилом выбора. Например, условию "PLANET" будет отдано предпочтение перед обобщенным условием "*".

Элемент <xsl:copy>

Элемент <xsl:copy> позволяет скопировать узел из исходного дерева в выходное. Заметьте, однако, что это поверхностное (shallow) копирование, при котором не копируются потомки и атрибуты узла. У элемента есть один атрибут:

• use-attribute-sets. Задает названия наборов атрибутов, которые нужно применить к создаваемому элементу. Принимает значение списка QName, разделенных символами-разделителями. Этот атрибут можно использовать только в том случае, когда контекстный узел является элементом. Дополнительная информация о наборах атрибутов приведена в главе 6. 

Этот элемент может содержать тело шаблона, которое используется только когда копируется корневой узел или элемент. Заметьте, что при применении к корневому узлу элемент <xsl:copy> не задействован, поскольку узел выходного документа создается автоматически.

Приведенная в листинге 3.9 таблица стилей впервые появилась в главе 2; все, что она делает, — копирует все элементы из исходного документа в результирующий.

Листинг 3.9. Таблица стилей, копирующая элементы

<?xml version="1.0"?>

<xsl:stylesheet

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

 <xsl:output method="xml"/>

 <xsl:template match="*">

  <xsl:copy>

   <xsl:apply-templates/>

  </xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Однако <xsl:copy> не копирует атрибуты — вот результат применения этой таблицы стилей к planets.xml:

<?xml version="1.0" encoding="UTF-8"?>

<PLANETS>

 <PLANET>

  <NAME>Mercury</NAME>

  <MASS>.0553</MASS>

  <DAY>58.65</DAY>

  <RADIUS>1516</RADIUS>

  <DENSITY>.983</DENSITY>

  <DISTANCE>43.4</DISTANCE>

 </PLANET>

 <PLANET>

  <NAME>Venus</NAME>

  <MASS>.815</MASS>

  <DAY>116.75</DAY>

  <RADIUS>3716</RADIUS>

  <DENSITY>.943</DENSITY>

  <DISTANCE>66.8</DISTANCE>

 </PLANET>

 <PLANET>

  <NAME>Earth</NAME>

  <MASS>1</MASS>

  <DAY>1</DAY>

  <RADIUS>2107</RADIUS>

  <DENSITY>1</DENSITY>

  <DISTANCE>128.4</DISTANCE>

 </PLANET>

</PLANETS>

Копирование атрибутов несколько сложнее, потому что нужно найти какой-либо способ применить <xsl:copy> к каждому атрибуту элемента. Это можно сделать, например, при помощи элемента <xsl:for-each>, о котором пойдет речь в главе 5.

Листинг 3.10. Копирование атрибутов

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="*">

  <xsl:copy>

   <xsl:for-each select="@*">

    <xsl:copy/>

   </xsl:for-each>

   <xsl:apply-templates/>

  </xsl:copy>

 </xsl:template>

</xsl:stylesheet>

А вот результат — заметьте, что на этот раз атрибуты не затронуты:

<?xml version="1.0" encoding-"UTF=8"?>

<PLANETS>

 <PLANET>

  <NAME>Mercury</NAME>

  <MASS UNITS="(Earth = 1)">.0553</MASS>

  <DAY UNITS="days">58.65</DAY>

  <RADIUS UNITS="miles">1516</RADIUS>

  <DENSITY UNITS="(Earth = 1)">.983</DENSITY>

  <DISTANCE UNITS="million miles">43.4</DISTANCE>

 </PLANET>

 <PLANET>

  <NAME>Venus</NAME>

  <MASS UNITS="(Earth = 1)">.815</MASS>

  <DAY UNITS="days">116.75</DAY>

  <RADIUS UNITS="miles">3716</RADIUS>

  <DENSITY UNITS="(Earth = 1)">.943</DENSITY>

  <DISTANCE UNITS="million miles">66.8</DISTANCE>

 </PLANET>

 <PLANET>

  <NAME>Earth</NAME>

  <MASS UNITS="(Earth = 1)">1</MASS>

  <DAY UNITS="days">1</DAY>

  <RADIUS UNITS="miles">2107</RADIUS>

  <DENSITY UNITS="(Earth = 1)">1</DENSITY>

  <DISTANCE UNITS="million miles">128.4</DISTANCE>

 </PLANET>

</PLANETS>

Но есть более простой путь проверить, что копируются все дочерние узлы, атрибуты и другие потомки узлов: вместо элемента <xsl:copy> можно применить <xsl:copy-of>.

ГЛУБОКОЕ КОПИРОВАНИЕ

Пример использования <xsl:copy> для осуществления глубокого копирования документа будет приведен в главе 4, в которой описывается функция узла и объясняется, как рекурсивно вызывать один и тот же шаблон.

Элемент <xsl:copy-of>

Элемент <xsl:copy-of> позволяет осуществлять глубокое копирование узлов, при котором копируется не только узел, но и все его атрибуты и потомки. У этого элемента единственный атрибут:

• select (обязательный). Узел или набор копируемых узлов. Этот элемент пуст и не имеет содержимого.

Ниже приведен пример работы этого элемента; в этом случае я заменил в листинге 3.10 элемент <xsl:for-each> элементом <xsl:copy-of>, который явно выбирает для копирования все атрибуты контекстного элемента.

Листинг 3.11. Применение <copy-of>

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="*">

  <xsl:copy>

   <xsl:copy-of select="@*"/>

   <xsl:apply-templates/>

  </xsl:copy>

 </xsl:template>

</xsl:stylesheet>

Этот код работает так же, как и предыдущий пример, копируя все элементы и атрибуты. С другой стороны, можно вообще обойтись без каких-либо изменений в листинге 3.10, — я могу просто использовать <xsl:copy-of> для того, чтобы скопировать весь документ, выбрав корневой узел и скопировав всех его потомков:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="/">

  <xsl:copy-of select="*"/>

 </xsl:template>

</xsl:stylesheet>

При помощи <xsl:copy-of> можно также копировать конкретные узлы и их потомков вместо того, чтобы задавать подстановку *. Например, следующее правило копирует все элементы <MASS> и их потомков:

<xsl:template match="MASS">

 <xsl:copy-of select="."/>

</xsl:template>

По этой причине я могу заменить элемент <MASS> на элемент <DAY>:

<xsl:template match="MASS">

 <xsl:copy-of select="DAY"/>

</xsl:template>

Элемент <xsl:message>

При помощи элемента <xsl:message> можно дать указание процессору XSLT отобразить сообщение и, по выбору, прекратить обработку таблицы стилей. У элемента <xsl:message> один атрибут:

• terminate (необязательный). Значение «yes» прекращает обработку. По умолчанию установлено «no».

Куда на самом деле будет отправлено сообщение, зависит от процессора XSLT. Для процессоров, основанных на Java, сообщение обычно отправляется в выходной поток ошибок Java, которому соответствует экран компьютера, если процессор XSLT был вызван из командной строки. Другие процессоры XSLT могут выводить сообщения во всплывающие окна или в web-страницы, отправляемые в браузеры.

В приведенном ниже листинге 3.12 я прекращаю обработку XSLT, когда процессор XSLT пытается преобразовать элемент <DAY> в planets.xml, выводя сообщение "Sorry, DAY information is classified." (Извините, информация о параметре «ДЕНЬ» засекречена.).

Листинг 3.12. Применение <xsl:message>

<?xml version="1.0"?>


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "XSLT"

Книги похожие на "XSLT" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Стивен Холзнер

Стивен Холзнер - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Стивен Холзнер - XSLT"

Отзывы читателей о книге "XSLT", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.