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

5.3.19.4. Функция system-property()

Функция system-property()возвращает значение свойства, которое определяется ее строковым параметром, и имеет следующее описание:

объектsystem-property(строка).

Аргумент этой функции должен представ­лять расширенное имя системного свойства. Если процессор не поддержи­вает свойство с таким именем, функция должна вернуть пустую строку.

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

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

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

  • xsl:vendor-url– это свойство должно возвращатьURLпроизводите­ля (как правило, это адрес Web-сайта производителя процессора).

Пример использования функции system-property():

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

<?xml version="1.0" encoding="Windows-1251"?>

<xsl:stylesheet version="1.0"

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

<xsl:output method="xml"

encoding="Windows-1251" indent="yes"/>

<xsl:template match="/">

<xsl:comment>

<xsl:text> XSLT Version: </xsl:text>

<xsl:value-of

select="format-number(

system-property('xsl:version'),'0.0')"/>

<xsl:text> XSLT Processor: </xsl:text>

<xsl:value-of

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

<xsl:text> URL: </xsl:text>

<xsl:value-of

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

<xsl:text> </xsl:text>

</xsl:comment>

<xsl:text> </xsl:text>

<xsl:apply-templates/>

</xsl:template>

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

<xsl:copy>

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

</xsl:copy>

</xsl:template>

</xsl:stylesheet>.

Для процессора MSXMLкомментарий будет иметь следующий вид:

<!--

XSLT Version: 1.0

XSLT Processor: Microsoft

URL: http://www.microsoft.com

-->,

а для процессора Saxon:

<!--

XSLT Version: 1.0

XSLT Processor: SAXON 6.5.2 from Michael Kay

URL: http://saxon.sf.net/

-->.

5.3.19.5. Функцияunparsed-entity-uri()

Функция unparsed-entity-uri()возвращает уникальный идентификатор ресурса, который соответствует неанализируемой внешней сущности и имеет следующее описание:

строка unparsed-entity-uri(строка).

В качестве аргумента функции задается имя неанализируемой внешней сущности.

Пример использования функции unparsed-entity-uri():

Следующее преобразование XSLTдляmessage.xml:

<?xml version="1.0" encoding="Windows-1251"?>

<xsl:stylesheet version="1.0"

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

<xsl:output method="html"

encoding="Windows-1251" indent="yes"/>

<xsl:template match="/">

<html>

<head>

<title>Вывод сообщений с изображениями</title>

</head>

<body>

<xsl:apply-templates select="message"/>

<hr />

</body>

</html>

</xsl:template>

<xsl:template match="header">

<hr />

<xsl:text>Сообщение </xsl:text>

<xsl:number count="header"/>

<xsl:text>. </xsl:text>

<xsl:apply-templates select="from"/>

<xsl:apply-templates select="to"/>

<xsl:apply-templates select="subject"/>

</xsl:template>

<xsl:template match="from">

<p>От:

<xsl:value-of select="@address"/>

</p>

</xsl:template>

<xsl:template match="to">

<p>Кому:

<xsl:value-of select="@address"/>

</p>

</xsl:template>

<xsl:template match="subject">

<p>Тема:

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

</p>

</xsl:template>

<xsl:template match="body">

<p>Текст:

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

</p>

<xsl:variable name="img"

select="preceding-sibling::header[1]/from/@image"/>

<xsl:for-each

select="preceding-sibling::header[1]/from/@*">

<xsl:if test="name() = 'image'">

<table border="3"><tr><td>

<xsl:element name="img">

<xsl:attribute name="src">

<xsl:value-of

select="unparsed-entity-uri($img)"/>

</xsl:attribute>

</xsl:element>

</td></tr></table>

</xsl:if>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

создаст следующий документ HTML:

<html>

<head>

<META http-equiv="Content-Type"

content="text/html; charset=Windows-1251">

<title>Вывод списка сообщений с изображениями</title>

</head>

<body>

<hr>Сообщение 1. <p>От: ivanov@mail.com</p>

<p>Кому: petrov@mail.com</p>

<p>Тема: Поздравление</p>

<p>Текст: Поздравляю с днем рождения!</p>

<table border="3"><tr><td>

<img src="file:///d:/images/greeting.gif">

</td></tr></table>

<hr>Сообщение 2. <p>От: ivanov@mail.com</p>

<p>Кому: sidorov@mail.com</p>

<p>Тема: Напоминание</p>

<p>Текст: Встречаемся в 10.00.</p>

<hr>

<body>

</html>.

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