2013-01-11 17 views
10

Mam ten prosty dokument XML:Definiowanie domyślnej przestrzeni nazw do użytku w XPaths XSL z XPath-default-nazw

<?xml version='1.0' encoding='UTF-8'?> 
<registry xmlns="http://www.iana.org/assignments" id="character-sets"> 
    <registry id="character-sets-1"> 
     <record> 
     <name>ANSI_X3.4-1968</name> 
     </record> 
    </registry> 
</registry> 

Kiedy używam tego XSL można wyodrębnić nazwę:

<?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://www.iana.org/assignments" version="1.0"> 
    <xsl:template match="/my:registry"> 
     <xsl:copy-of select="//my:record/my:name"/> 
    </xsl:template> 
</xsl:stylesheet> 

Jednakże jeśli pominąć nazw w xSL XPath-selektorów, mam żadnego wyjścia:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://www.iana.org/assignments" xpath-default-namespace="http://www.iana.org/assignments" version="1.0"> 
    <xsl:template match="/registry"> 
     <xsl:copy-of select="//record/name"/> 
    </xsl:template> 
</xsl:stylesheet> 

myślałem XPath-default-namespace ten służy do Zrób sztuczkę. czego mi brakuje?

W przypadku wersji biblioteki są ważne mam

libexpat1 (> = 1.95.8)

libxerces-C3.1

libxml2 (> = 2.7.4)

libxslt1 .1 (> = 1.1.25)

Odpowiedz

13

Niestety, jest to funkcja XSLT 2.0. trzeba powtórzyć nazw lub alias go w xpath w xslt 1.0

Reference: Jenni Tennison i IBM

+0

Tak, teraz widzę, że libxslt1.1 nie obsługuje 'XPath-default-namespace' Dziękuję ! – JohnDoe

+0

W jaki sposób można zdefiniować 'xpath-default-namespace' w' xslt' version 1.0? – pkaramol