【问题标题】:XML to HTML problemsXML 到 HTML 的问题
【发布时间】:2012-03-21 08:33:20
【问题描述】:

这是我的 xml:

<?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. 从另一个非本地站点加载外部 xml。

  2. 拥有电影列表,当您按下电影时,会弹出一个弹出窗口或一个新页面,您可以获得有关电影的更多信息。但是如何动态创建它,以便弹出窗口中的信息保持不变,但电影的名称会根据您点击的电影而改变..?

  3. 匹配“事件”正在运行,但可能是错误的.. (?)

【问题讨论】:

    标签: javascript xml xls


    【解决方案1】:

    应该有一个xsl:for-each来循环显示电影,如下:

    <?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>
    

    【讨论】:

    • 我现在检查一下。我知道 xls 就像 XML 文件的 css,但是我的用户的页面 URL 将如何呢? example.com/something.xml ? example.com/something.xls ? example.com/something/ ?准备好后,如何将此 XML 文件附加到我网站上的页面?谢谢!
    • 您的建议有效,谢谢!你能告诉我如何从另一个站点而不是本地站点导入 XML 吗?
    • 我认为,在你的情况下,你可以使用像 PHP 这样的服务器端语言,你可以使用一个简单的函数来获取那个 XML 文件。让我给你一个 PHP 示例: 1. 创建一个名为“get_xml.php”的文件。 2.把这个内容&lt;?php header ("content-type: text/xml"); $url = $_GET['url']; $xml = file_get_contents($url); /* modify the xml and insert xsl stylesheet definition, and then output modified xml */ echo $xml; ?&gt;放上去有意义吗?
    • 我无法在我正在使用的同一个 html 页面上执行此操作:$xml = file_get_contents(example.com/feed);然后 xmlDoc=loadXMLDoc("$xml"); ??谢谢!
    • 好了,记住,loadXMLDoc 是一个客户端函数 (JavaScript)。因此,在您的 HTML 文件中,在 JavaScript 标记中,您将其称为:xmlDoc=loadXMLDoc("get_xml.php?url=http://example.com/feed");get_xml.php 是您要创建的本地文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2012-03-19
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多