2012-03-21 44 views
1

這是我的xml:XML到HTML的問題

<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml-stylesheet type="text/xsl" href="movies.xsl"?> 
<root> 
<Diary> 
<Event EventName="J.Edgar" Classification="2011 Movies" EventStart="2012-03-19T07:00:00+00:00" EventEnd="2012-03-19T08:00:00+00:00" /> 
<Event EventName="Titanic" Classification="1997 Movies" EventStart="2012-03-19T09:00:00+00:00" EventEnd="2012-03-19T10:00:00+00:00" /> 
</Diary> 
</root> 

我爲創建這個兩個選擇我需要什麼:

  1. <?xml version="1.0" encoding="ISO-8859-1"?> 
    
    <xsl:template match="Event"> 
        <html> 
        <body> 
        <h2>Best movies</h2> 
        <p>Here you can find the top movies ever.</p> 
        <table border="1"> 
        <tr bgcolor="#9acd32"> 
         <th>Movie</th> 
         <th>Year</th> 
         <th>Start Time</th> 
         <th>End Time</th> 
        </tr> 
        <tr> 
         <td><xsl:value-of select="@EventName"/></td> 
         <td><xsl:value-of select="@Classification"/></td> 
         <td><xsl:value-of select="@EventStart"/></td> 
         <td><xsl:value-of select="@EventEnd"/></td> 
        </tr> 
        </table> 
        </body> 
        </html> 
    </xsl:template> 
    
    </xsl:stylesheet> 
    

2.

<head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     <script type="text/javascript"> 
      function loadXMLDoc(fName){ 
       if (window.XMLHttpRequest){ 
        xhttp=new XMLHttpRequest(); 
       } else { 
        xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       xhttp.open("GET",fName,false); 
       xhttp.send(""); 
       return xhttp.responseXML; 
      } 

      xmlDoc=loadXMLDoc("movies.xml"); 

      function displayEvents(){ 
       var eventsO = xmlDoc.getElementsByTagName("Event"); 
       var tableO = document.createElement('table'), newRow, newCell; 
       for(i=0; i<eventsO.length; i++){ 
        newRow = tableO.insertRow(-1); 
        newCell = newRow.insertCell(-1); 
        newCell.appendChild(document.createTextNode(eventsO[i].getAttribute('EventName'))); 
        newCell = newRow.insertCell(-1); 
        newCell.appendChild(document.createTextNode(eventsO[i].getAttribute('Classification'))); 
       } 
       document.body.appendChild(tableO); 
      } 
      window.onload=displayEvents; 
     </script> 
    </head> 
    <body> 

    </body> 
</html> 

你能否請在這些代碼中糾正我?

我願做以下特點:

  1. 負荷從其他網站ANL不是本地的外部XML。

  2. 有電影列表,當你按下電影,彈出或新頁面出現,你有更多關於電影的信息。但是,如何動態創建它,以便彈出窗口中的信息保持不變,但電影名稱會根據您點擊的電影而改變。?

  3. 比賽「事件」是工作,但也許這是錯的..

回答

0

應該有一個xsl(?):對,每個顯示在一個循環中的電影,具體如下:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>Best movies</h2> 
    <p>Here you can find the top movies ever.</p> 
    <table border="1"> 
    <tr bgcolor="#9acd32"> 
     <th>Movie</th> 
     <th>Year</th> 
     <th>Start Time</th> 
     <th>End Time</th> 
    </tr> 

    <xsl:for-each select="root/Diary/Event">  
     <tr> 
      <td><xsl:value-of select="@EventName"/></td> 
      <td><xsl:value-of select="@Classification"/></td> 
      <td><xsl:value-of select="@EventStart"/></td> 
      <td><xsl:value-of select="@EventEnd"/></td> 
     </tr> 
    </xsl:for-each> 

    </table> 
    </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 
+0

我現在就檢查一下。 據我所知,xls就像一個XML文件的CSS,但那麼我的用戶頁面的URL如何呢? example.com/something.xml? example.com/something.xls? example.com/something/? 當我的網站準備好時,如何將這個XML文件附加到我的網頁上? 謝謝! – tomastsc 2012-03-21 13:34:15

+0

您的建議很有用,謝謝!你能告訴我如何從另一個站點導入XML而不是本地站點? – tomastsc 2012-03-21 13:45:01

+0

我認爲,在你的情況下,你可以使用像PHP這樣的服務器端語言,在那裏你可以使用一個簡單的函數來獲取這個XML文件。讓我給你一個PHP示例:1.創建一個名爲'get_xml.php'的文件。 2.把這個內容放在<?php頭部(「content-type:text/xml」); $ url = $ _GET ['url']; $ xml = file_get_contents($ url);/*修改xml並插入xsl樣式表定義,然後輸出修改後的xml */echo $ xml; ?>這是否有意義? – safrazik 2012-03-21 14:04:44