<xsclass="underline" value-of select="@UNITS"/>
</xsclass="underline" template>
.
.
.
<xsclass="underline" template match="DAY">
<xsclass="underline" value-of select="."/>
<xsclass="underline" text> </xsclass="underline" text>
<xsclass="underline" value-of select="@UNITS"/>
</xsclass="underline" template>
</xsclass="underline" stylesheet>
Вот и все; сейчас я создал гиперссылки с атрибутом HREF, значение которого равно идентификатору элемента <PLANET>; при помощи же этого идентификатора я сделал каждый элемент <PLANET> назначением гиперссылки.
Когда пользователь щелкает на гиперссылку в оглавлении, браузер прокручивает данные до соответствующей записи планеты в HTML-таблице. Вот как выглядит результирующий документ при использовании процессора Xalan:
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<H2>
<A href="#N5">Mercury</A>
</H2>
<P></P>
<H2>
<A href="#N20">Venus</A>
</H2>
<P></P>
<H2>
<A href="#N3B">Earth</A>
</H2>
<P></P>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<TR>
<TD><A NAME="N5">Mercury</A></TD>
<TD>.0553 (Earth = 1)</TD>
<TD>1516 miles</TD>
<TD>58.65 days</TD>
</TR>
<TR>
<TD><A NAME="N20">Venus</A></TD>
<TD>.815 (Earth = 1)</TD>
<TD>3716 miles</TD>
<TD>116.75 days</TD>
</TR>
<TR>
<TD><A NAME="N3B">Earth</A></TD>
<TD>1 (Earth = 1)</TD>
<TD>2107 miles</TD>
<TD>1 days</TD>
</TR>
</TABLE>
</BODY>
</HTML>
key()
Функция key служит для поиска узлов с определенным значением по именованному ключу, ее следует применять следующим образом:
node-set key(name, value)
Функции передаются имя ключа name в виде строки и требуемое значение ключа value, которое нужно найти. Функция возвращает набор узлов из найденных узлов.
Ключи создаются при помощи элемента <xsclass="underline" key>. Мы уже видели следующий пример в главе 4 — здесь я при помощи ключей выбираю планеты, чей атрибут COLOR установлен в «BLUE»:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="planets.xsl"?>
<PLANETS>
.
.
.
<PLANET COLOR="BLUE">
<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><!--B перигелии-->
</PLANET>
</PLANETS>
Теперь при помощи <xsclass="underline" key> я могу создать ключ COLOR, выбирающий элементы <PLANET> и проверяющий их атрибут COLOR. Вот как он выглядит:
<?xml version="1.0"?>
<xsclass="underline" stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsclass="underline" key name="COLOR" match="PLANET" use="@COLOR"/>
.
.
.
Теперь я могу применить образец «key()» для выбора элементов <PLANET> с атрибутом COLOR со значением «BLUE» таким образом:
<?xml version="1.0"?>
<xsclass="underline" stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsclass="underline" key name="COLOR" match="PLANET" use="@COLOR"/>
<xsclass="underline" template match="/PLANETS">
<HTML>
.
.
.
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsclass="underline" apply-templates select="key('COLOR', 'BLUE')"/>
</TABLE>
</BODY>
</HTML>
</xsclass="underline" 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:
• xsclass="underline" version. Возвращает версию XSLT;
• xsclass="underline" vendor. Возвращает строку, идентифицирующую производителя процессора XSLT;
• xsclass="underline" vendor-url. Возвращает URL производителя процессора XSLT.