2011-02-09 79 views
0

服用XSLT和XML從該網頁作爲一個例子:爲什麼XSLT不能解析這個XML?

http://www.w3schools.com/xsl/xsl_transformation.asp

我有一個包含一個XML文件(上面的例子中修改):

<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> 
<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns="http://tempuri.org/"> 
    <cd> 

以我的情況下,輸出包含瀏覽器處理XSLT/XML時什麼也不做。當我從元素中刪除屬性時,它就起作用了。問題是,我實際上沒有選擇將這些屬性預處理出文件。

任何人都可以解釋如何強制XSLT按原樣使用XML嗎?畢竟,這些屬性看起來相當標準。

非常感謝,

馬特。

+2

回覆:w3schools:http://www.w3fools.com/ – 2011-02-09 15:19:12

+0

但是,您是否想構建自己的XSLT來轉換XML文件?或者只是用瀏覽器打開它? – GuilhermeA 2011-02-09 15:19:23

回答

7

將該默認名稱空間添加到樣式表中,然後使用它。

1

你與你的聲明基本上修改的<cd>默認命名空間

<{http://tmpuri.org}:cd> 

,不會被未經修改的樣式表進行匹配。

0

什麼是Ignacio說你的文檔是在命名空間中定義的。因此,在樣式表中,只能匹配完全限定的名稱。

如果XSLT樣式表是匹配只在本地名稱:

<xsl:template match="cd"> 
... 
</xsl:template> 

那麼它永遠不會被匹配。但是,如果你把這個樣式表的根元素:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:catalog="http://tempuri.org/"> 
... 
</xsl:stylesheet> 

...並使用合格的名稱相匹配,如:

<xsl:template match="catalog:cd"> 
... 
</xsl:template> 

...然後它的作品。

相關問題