[xpath] namespace
<xsl:template match="n1|book">
<xsl:copy-of select="."/>
</xsl:template>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="//ns1|item">
<font color="red"><b><xsl:value-of select="." /></b></font>
</xsl:template>
<xsl:template match="//ns2|item">
<font color="yellow"><b><xsl:value-of select="." /></b></font>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<site>
<panel>
<n1:item xmlns:n1="n1">hallo1</n1:item>
<n2:item xmlns:n2="n2">hallo2</n2:item>
</panel>
</site>
вообще | служит просто для разделения различных путей, к которым применяется данный шаблон. Мне же другое нужно. И вообще я, наверно, ввел в заблуждение здесь. Ведь n1 и n2 - это просто псевдонимы для наших пространств имен. А как ваш шаблон должен работать для пространств имен http://n1.ru и http://n2.ru?
![](/images/graemlins/wink.gif)
![](/images/graemlins/frown.gif)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:n1="n1"
xmlns:n2="n2"
>
<xsl:template match="//n1:item">
<font color="red"><b><xsl:value-of select="." /></b></font>
</xsl:template>
<xsl:template match="//n2:item">
<font color="yellow"><b><xsl:value-of select="." /></b></font>
</xsl:template>
</xsl:stylesheet>
//x:booking[@unitCharge=50] where the prefix x is bound to the namespace "http://www.FicticiousTourismInterface/BookingService",
or equivalently,
//*[namespace-uri='http://www.FicticiousTourismInterface/BookingService" and local-name = 'booking' and @unitCharge=50]
а.. точно) работает. только я так и не понял, почему... что означает n1|item ?
а двоеточие как раз и обозначает префикс namespace-а
А в твоём примере пространства имён обозначены по-разному: ns1 и n1.
пардон) точно. тогда все понятно становится. спасибо.
Оставить комментарий
oleg1331
Необходимо выбрать в документе все элементы <element> из определенного пространства имен. Как их выделить с помощью xpath? Т.е. например документ:вот. и для каждого элемента book нужно запустить соответствующий обработчик <xsl:template>. как?