соответствует неразбираемой внешней сущности, имя которой передано как аргумент.
Описывая синтаксис XML, мы приводили пример документа, который использовал неразбираемые внешние сущности.
<!DOCTYPE menu [
<!ELEMENT menu (menuitem*)>
<!ELEMENT menuitem EMPTY>
<!ATTLIST menuitem
image ENTITY #REQUIRED
title CDATA #REQUIRED
href CDATA #REQUIRED>
<!NOTATION gif SYSTEM 'gif-viewer.exe'>
<!NOTATION jpg SYSTEM 'jpg-viewer.exe'>
<!ENTITY news SYSTEM 'news.gif' NDATA gif>
<!ENTITY products SYSTEM 'prod.jpg' NDATA jpg>
<!ENTITY support SYSTEM 'support.gif' NDATA gif>
]>
<menu>
<menuitem image='news' title='News' href='news.htm'/>
<menuitem image='products' title='Products' href='prods.htm'/>
<menuitem image='support' title='Support' href='support.htm'/>
</menu>
Для того чтобы вычислить местоположение графических файлов, соответствующих пунктам этого меню, нужно будет использовать функцию unparsed- entity-uri
. Аргументом этой функции в данном случае будет значение атрибута image
, ведь именно этот атрибут задает имя неразбираемой сущности, которая соответствует изображению пункта меню. Преобразование такого документа в HTML будет иметь приблизительно следующий вид.
<xsl:stylesheet
version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output
method='html'
indent='yes'/>
<xsl:template match='menu'>
<table>
<xsl:apply-templates select='menuitem'/>
</table>
</xsl:template>
<xsl:template match='menuitem'>
<tr>
<td>
<A alt='{@title}' href='{@href}'>
<img src='{unparsed-entity-uri(@image)}'/>
</A>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
Результат преобразования приведен на следующем листинге.
<table>
<tr>
<td>
<A alt='News' href='news.htm'>
<img src='file:/C:/XML/news.gif'/>
</A>
</td>
</tr>
<tr>
<td>
<A alt='Products' href='prods.htm'>
<img src='file:/C:/XML/prod.jpg'/>
</A>
</td>
</tr>
<tr>
<td>
<A alt='Support' href='support.htm'>
<img src='file:/С:/XML/support.gif'/>
</A>
</td>
</tr>
</table>
Остается только добавить, что unparsed-entity-uri
— это единственная функция, которая позволяет работать с неразбираемыми сущностями. Никаких средств для обработки нотаций и вспомогательных приложений, которые им соответствуют, в XSLT нет. Сказывается тот факт, что неразбираемые сущности и нотации очень редко используются в документах, поэтому их поддержка в XSLT минимальна.
Функция
Синтаксическая конструкция этой функции:
Функция generate-id
возвращает уникальный строковый идентификатор первого в порядке просмотра документа узла, передаваемого ей в виде аргумента. Если аргумент опущен, функция возвращает уникальный идентификатор контекстного узла. Если аргументом является пустое множество, функция должна возвращать пустую строку.
Функция generate-id
обладает следующими свойствами.
□ Функция generate-id
возвращает для двух узлов один и тот же