使用XSLT从网站提取数据

我正在尝试学习XSLT,并遇到了一个问题。 我想要做的是从网站中提取一些数据,使用xslt模板进行转换,最后将其显示在我自己的xhtml页面中。

让我说我有一个XML文件(这将是我的XHTML网站):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?xml-stylesheet type="text/xsl" href="myXSLTFile.xsl"?>


<!--here I want to have markup produced by xslt file-->

问题是如何实现这一目标? 我想让我的xslt文件在特定网站(例如http://www.example.com)的节点上工作,并将结果生成到我自己的xml文件中。

如果您发现我的解释令人困惑,请提问,我会尽力更好地解释这个问题。

编辑。 我会举一个例子。 可以说我们有这个网页:http://www.w3.org/TR/xhtml1/。 我想开发XSLT文档,从全部目录中提取章节和章节的标题,并将它们放入我自己的xml文件中的表格中。 我遇到的问题是如何在我的xslt文件中引用页面:http://www.w3.org/TR/xhtml1/,以便它可以在其节点上工作 (本页面是用xhtml编写的,所以我没有担心将html转换为xml)。

EDIT2。 经过进一步的研究,似乎Thomas W.的答案是解决问题的方法,但是您必须处理XSS问题(LarsH的答案提示)。


理论上,你可以做类似的事情

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<page href="http://www.w3.org/TR/xslt/index.htm"/>

并有像样式表

<?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"
    xmlns:h="http://www.w3.org/1999/xhtml">

  <xsl:template match="/">
    <html>
      <head></head>
      <body>
        <xsl:for-each select="document(*/@href)//h:h2">
          <xsl:copy-of select="."/>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

但是,这并不适用于所有浏览器(仅限于Chrome,就我看来)。 一个原因可能是阻止加载外部页面的XSS安全功能。


有几种方法可以解决XSS限制...请参阅AJAX和跨站点脚本来阅读标题

  • 添加本地PHP或其他服务器页面以代理其他网站。
  • 使用CORS。
  • 链接地址: http://www.djcxy.com/p/88831.html

    上一篇: Extracting data from website with XSLT

    下一篇: Has there ever been any competitive markup language to X/HTML?