Книга: XSLT

Применение оси namespace

Применение оси namespace

Ось namespace содержит узлы пространств имен контекстного узла. Заметьте, что эта ось пуста, если контекстным узлом не является элемент. У элемента присутствует узел пространства имен для:

• каждого атрибута элемента, чье имя начинается с «xmlns:»;

• каждого атрибута элемента-предка, чье имя начинается с «xmlns:» (конечно, если сам элемент или ближайший предок не объявит пространство имен заново);

• атрибута xmlns, если элемент или предок имеет атрибут xmlns.

В следующем примере (листинг 7.10) я хочу отобразить пространство имен элемента <PLANET> в результирующем документе, и в исходном документе я присвоил пространству имен значение «http://www.starpowder.com».

Листинг 7.10. planets.xml с объявлением пространства имен

<?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="planets.xsl"?>
<PLANETS xmlns="http://www.starpowder.com">
 <PLANET>
  <NAME>Mercury</NAME>
  <MASS UNITS="(Earth = 1)">.0553</MASS>
  <DAY UNITS="days">58.65</DAY>
  <RADIUS UNITS="miles">1516</RADIUS>
  <DENSITY UNITS="(Earth = 1)">.983</DENSITY>
  <DISTANCE UNITS="million miles">43.4</DISTANCE><!--В перигелии-->
 </PLANET>
 .
 .
 .

Вот таблица стилей (листинг 7.11), в которой я проверяю пространства имен, используемые в элементе <PLANETS>.

Листинг 7.11. Применение оси namespace в planets.xml

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml"/>
 <xsl:template match="PLANETS">
  <xsl:value-of select="namespace::*"/>
 </xsl:template>
</xsl:stylesheet>

А вот результирующий документ (заметьте, что вид документа может меняться в зависимости от процессора XSLT):

<?xml version="1.0" encoding="UTF-8"?>
http://www.starpowder.com

Оглавление книги


Генерация: 1.430. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз