=> Главная База Знаний Xslt Применение оси namespace


Применение оси 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