2013-02-01 28 views
0

爲什麼我會得到空輸出?當我在xml中刪除xmlns部分時,輸出如預期的那樣,但隨後intellisense不再工作。使用xml命名空間的奇怪行爲

warehouse.xml

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="warehouse.xsl"?> 
<warehouse xmlns="http://schema.mynamespace.net"> 
    <container> 
    <item> 
     <name>book</name> 
     <value>1.23</value> 
    </item> 
    <item> 
     <name>phone</name> 
     <value>45.6</value> 
    </item> 
    </container> 
</warehouse> 

warehouse.xsl

<xsl:stylesheet xmlns="http://schema.mynamespace.net" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:output method="text"/> 

<xsl:template match="/"> 
    <xsl:apply-templates select="warehouse/container" />" 
</xsl:template> 

<xsl:template match="container"> 
    <xsl:apply-templates />" 
</xsl:template> 

</xsl:stylesheet> 
+0

你可以通過在Google中輸入「XSLT奇怪行爲與命名空間」得到答案。 –

回答

2

即使您指定一個特定的命名空間爲您的XSL默認命名空間,的XPath沒有命名空間前綴總是在空名稱空間。你需要做這樣的事情:

<xsl:stylesheet xmlns:mns="http://schema.mynamespace.net" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="text"/> 

    <xsl:template match="/"> 
    <xsl:apply-templates select="mns:warehouse/mns:container" />" 
    </xsl:template> 

    <xsl:template match="mns:container"> 
    <xsl:apply-templates />" 
    </xsl:template> 

</xsl:stylesheet>