Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:
Листинг 8.70. Преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:template match="@*|node">

<xsl:copy>

<xsl:apply-templates select="@*|node"/>

</xsl:copy>

 </xsl:template>

 <xsl:template match="item">

<xsl:copy>

<xsl:attribute name="id">

<xsl:text><xsl:value-of select="generate-id"/><xsl:text>

</xsl:attribute>

<xsl:apply-templates select="@*|node"/>

</xsl:copy>

 </xsl:template>

</xsl:stylesheet>

В выходящем документе элементы

item
будут иметь уникальные идентификаторы.

Листинг 8.71. Выходящий документ

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

<items>

 <item id="b1b1b2" source="a" name="A"/>

 <item id="b1b1b4" source="b" name="B"/>

 ...

 <item id="b1b1c34" source="a" name="F"/>

</items>

Сразу оговоримся, что этот способ будет работать не всегда:

generate-id
создает идентификатор, который является уникальным среди всех остальных идентификаторов узлов, а не среди всех значений уникальных атрибутов документа. Так что если бы какой-либо элемент имел ID-атрибут со значением
b1b1b4
, выходящий документ перестал бы быть правильным. Однако же, если в документе до преобразования вообще не было уникальных атрибутов, все будет в порядке.

Функция system-property

Синтаксис этой функции приведен ниже:

object system-property(string)

Функция

system-property
возвращает значение свойства, которое определяется ее строковым параметром. Аргумент этой функции должен представлять расширенное имя системного свойства. Если процессор не поддерживает свойство с таким именем, функция должна вернуть пустую строку.

Эта функция предназначена для получения информации об окружении, в котором производится преобразование. В стандарте языка указано, что все процессоры в обязательном порядке должны поддерживать следующие системные свойства:

□ 

xsl:version
— это свойство должно возвращать номер версии языка XSLT, которую поддерживает данный процессор.

□ 

xsl:vendor
— это свойство должно возвращать текстовую информацию о производителе используемого процессора.

□ 

xsl:vendor-uri
— это свойство должно возвращать URL производителя — как правило,
xsl:vendor-uri
— это адрес Web-сайта производителя процессора.

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

Пример

В качестве примера приведем небольшой шаблон, выводящий в виде комментария информацию о процессоре.

Листинг 8.72. Шаблон, выводящий системную информацию

<xsl:template name="info">

 <xsl:comment>

<xsl:text>&#xA; | XSLT Version: </xsl:text>

<xsl:value-of

select="format-number(system-property('xsl:version'), '0.0')"/>

<xsl:text>&#xA; | XSLT Processor: </xsl:text>

<xsl:value-of select="system-property('xsl:vendor')"/>

<xsl:text>&#xA; | URL: </xsl:text>

<xsl:value-of select="system-property('xsl:vendor-url')"/>

<xsl:text>&#xA; +</xsl:text>

 </xsl:comment>

</xsl:template>

Процессор SAXON, написанный Майклом Кеем (Michael Kay), выводит следующий комментарий:

<!--

 | XSLT Version: 1.0

 | XSLT Processor: SAXON 6.0.2 from Michael Kay of ICL

  • Читать дальше
  • 1
  • ...
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: