.
Теперь я могу применить образец «key()» для выбора элементов <PLANET> с атрибутом COLOR со значением «BLUE» таким образом:
<?xml version='1.0'?>
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:key name='COLOR' match='PLANET' use='@COLOR'/>
<xsl:template match='/PLANETS'>
<HTML>
.
.
.
<TABLE BORDER='2'>
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsl:apply-templates select='key('COLOR', 'BLUE')'/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
.
.
.
И вот результат — как видите, единственной планетой, удовлетворившей образцу, была Земля:
<HTML>
<НЕАD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<TABLE BORDER='2'>
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<TR>
<TD>Earth</TD>
<TD>1 (Earth = 1)</TD>
<TD>2107 miles</TD>
<TD>1 days</TD>
</TR>
</TABLE>
</BODY>
</HTML>
system-property()
Функция system-property возвращает значение нескольких системных свойств в виде строк; вот как ей следует пользоваться:
string system-property(property)
Можно проверять следующие возможные значения системного свойства property:
• xsl:version. Возвращает версию XSLT;
• xsl:vendor. Возвращает строку, идентифицирующую производителя процессора XSLT;
• xsl:vendor-url. Возвращает URL производителя процессора XSLT.
Вот пример — версию XSLT можно проверить, вызвав system-property('xsl:version') ;
<?xml version='1.0'?>
<xsl:stylesheet version='2.0'
xmlns:xsl='http.//www.w3.org/1999/XSL/Transform'>
.
.
.
<xsl:if text='system-property('xsl:version')=2.0'>
<xsl:namespace name='starpowder'/>
</xsl:if>
.
.
.
</xsl:stylesheet>
Проверка версии XSLT может понадобиться, если вы хотите воспользоваться возможностями, которые появились в последних версиях.
unparsed-entity-uri()
Функция unparsed-entity-uri() предоставляет доступ к объявлениям неразобранных сущностей в DTD или схеме исходного документа. Неразобранная сущность (unparsed entity) — это обычно двоичные данные, такие как файл с рисунком. Функция применяется следующим образом:
string unparsed-entity-uri(name)
В функцию передается имя name неразобранной сущности, и функция возвращает для нее идентификатор. В следующем примере (листинг 8.6) я добавил в planets.xml DTD и объявил три неразобранных сущности, соответствующих рисункам планет — image1, image2 и image3, — и обратился к ним, добавив в каждый элемент
