2015-08-30 81 views
0

我創建了2個文件:book.xml和book.xsl。我想打開xml文件並顯示xsl信息。但是,只有背景顏色顯示,沒有其他文字。XML僅用XSL樣式表顯示背景顏色

對於我的類分配,我所需要做的就是能夠證明我可以將XML轉換爲另一種類型的文件(如XHTML)。

我使用了Firefox和Internet Explorer,它只顯示背景顏色。 Chrome根本不顯示任何內容。

我在PC上使用Windows 7。

任何幫助將不勝感激!

這裏是我打至今代碼:

XML

<!-- book.xml file --> 

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

<?xml-stylesheet type="text/xsl" href="book.xsl" ?> 

<bookstore> 
    <h1>List of Books for Sale</h1> 
    <li> 
    <book> 
     <title>Harry Potter and the Sorcerer's Stone</title> 
     <author>Author: J.K. Rowling</author> 
     <year>Publish Year: 1997</year> 
     <price>Price: $29.95 USD</price> 
    </book> 

    <book> 
     <title>Hunger Games</title> 
     <author>Author: Suzanne Collins</author> 
     <year>Publish Year: 2008</year> 
     <price>Price: $39.95 USD</price> 
    </book> 

    <book> 
     <title>Game of Thrones</title> 
     <author>Author: George R.R. Martin</author> 
     <year>Publish Year: 1996</year> 
     <price>Price: $16.95 USD</price> 
    </book> 
    </li> 
</bookstore> 

XSLT

<!-- book.xsl' file --> 

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

<!-- Transfer this HTML to XHTML for display --> 

<xsl:template match="/"> 

    <html> 
     <head> 
      <title> List of Books For Sale </title> 
     </head> 
     <body style="background-color:ivory"> 

      <!-- This is the template logic for the book elements 
      when several nodes match an XPath expression. --> 

      <xsl:for-each select="bookstore/book"> 
       <xsl:apply-templates select="title" /> 
       <xsl:apply-templates select="author" /> 
       <xsl:apply-templates select="year" /> 
       <xsl:apply-templates select="price" /> 
      </xsl:for-each> 

     </body> 
    </html> 

    </xsl:template> 


    <!-- templates for the name and author elements--> 

     <xsl:template match="title"> 
      <div style="display:list-item; color:black; margin-left:20pt;"> 
       <xsl:value-of select="." /> 
      </div> 
     </xsl:template> 

     <xsl:template match="author"> 
      <div style="display:list-item; color:black; margin-left:20pt;"> 
       <xsl:value-of select="." /> 
      </div> 
     </xsl:template> 


      <xsl:template match="year"> 
       <div style="display:list-item; color:black; margin-left:20pt;"> 
        <xsl:value-of select="." /> 
       </div> 
      </xsl:template> 


      <xsl:template match="price"> 
       <div style="display:list-item; color:black; margin-left:20pt;"> 
        <xsl:value-of select="." /> 
       </div> 
      </xsl:template> 

     </xsl:stylesheet> 

回答

2

在你的XML中,book元素嵌套的li元素中,但你必須沒有考慮到用於選擇book元素的XPath表達式。

而不是做這個的......

<xsl:for-each select="bookstore/book"> 

你只需要做到這一點...

<xsl:for-each select="bookstore/li/book"> 

另外請注意,您輸入的XML沒有形成良好的在你的問題,因爲您錯過了結束</bookstore>標記。

+0

哇,謝謝!有效。蒂姆,我感謝你的幫助! :D – Sugarcoder

+0

我忘了把結束標記放在這裏,但我把它放在了我的文檔中。只需添加即可。 :) – Sugarcoder