2013-01-11 12 views
10

Ich habe dieses einfache XML-Dokument:mit XPath-default-Namespace

<?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> 

Als ich dieses xsl kann ich den Namen extrahieren:

<?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> 

Wenn ich den Namespace in den xsl XPath-Selektoren jedoch nicht angeben, bekomme ich keine Ausgabe:

<?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> 

ich dachte, XPath-default-Namespace wird, soll Mache den Trick. Was vermisse ich?

Bei Bibliotheksversionen sind wichtig, ich habe

libexpat1 (> = 1.95.8)

libxerces-C3.1

libxml2 (> = 2.7.4)

libxslt1 0,1 (> = 1.1.25)

Antwort

13

Leider xpath-default-namespace ist eine XSLT-2.0-Funktion. Sie müssen den Namespace oder Alias ​​es in Ihrem xpath in xslt 1.0

Referenz wiederholen: Jenni Tennison und IBM

+0

Ja, jetzt sehe ich, dass libxslt1.1 nicht unterstützt 'XPath-default-namespace' Danke ! – JohnDoe

+0

Wie kann jemand 'xpath-default-namespace' in' xslt' Version 1.0 definieren? – pkaramol