2016-04-27 157 views
0

我一直在試圖用我的XSL樣式表測試鏈接我的XML文檔,但它所做的只是顯示XML文檔的信息並忽略了我的模板,我不知道爲什麼。XML文檔沒有註冊XSL樣式表?

movies.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="movies.xsl"?> 

<movieRoot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://www.example.com/comicbooks/movies/ns" 
     xsi:schemaLocation="http://www.example.com/comicbooks/movies/ns movies.xsd"> 

    <movie> 

     <movieTitle>Captain America: Civil War</movieTitle> 
     <genre>Action, Adventure, Sci-Fi</genre> 
     <rating>8.13</rating> 
     <length>147 min</length> 
     <releaseDate>May 6th, 2016</releaseDate> 

    </movie> 

</movieRoot> 

movies.xsl樣式表(我也嘗試申請模板選擇= 「電影」 爲好)

<?xml version="1.0" encoding="UTF-8" ?> 

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

    <xsl:template match="/"> 

     <html> 
     <link ref="stylesheet" type="text/css" href="movies.css" /> 
     <body> 
      <xsl:apply-templates /> 

     </body> 
     </html> 


    </xsl:template> 

    <xsl:template match="movie"> 

     <p>Movies</p> 

    </xsl:template> 

</xsl:stylesheet> 

movies.css

body {color:blue;} 

回答

0

你的xml文件有一個默認的命名空間。
您需要在xsl文件中聲明該名稱空間並使用它。

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ns="http://www.example.com/comicbooks/movies/ns"> 


<xsl:template match="ns:movie"> 

而且你有一個錯字:ref,而不是rel

<link rel="stylesheet" type="text/css" href="movies.css" /> 

修改XSL文件應該是這樣的後:

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ns="http://www.example.com/comicbooks/movies/ns"> 

    <xsl:template match="/"> 

     <html> 
     <link rel="stylesheet" type="text/css" href="movies.css" /> 
     <body> 
      <xsl:apply-templates /> 
     </body> 
     </html> 

    </xsl:template> 

    <xsl:template match="ns:movie"> 

     <p>Movies</p> 

    </xsl:template> 

</xsl:stylesheet> 

其他文件保持不變。

+0

我似乎有同樣的問題,不幸的是 –

+0

@TimBob - 你如何運行它?我在Firefox中測試過 - 它可以工作。 –

+0

我使用了相同的瀏覽器。也許我沒有做出適當的改變。 –