从网站提取数据与XSLT(Extracting data from website with XSL

2019-10-17 13:48发布

我想学习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文件。 我有问题,问题是如何引用页面: http://www.w3.org/TR/xhtml1/在我的XSLT文件,以便它能发挥其节点上 (此页是用XHTML所以我没有担心转化HTML到XML)。

EDIT2。 进一步研究后却仿佛托马斯·的答案是解决问题的办法,但你必须处理,XSS问题(在LarsH的答案提示)。

Answer 1:

从理论上讲,你可以这样做

<?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安全功能。



Answer 2:

一对夫妇的方式来解决XSS限制......看到AJAX和跨站点脚本读取头

  • 本地PHP或其他服务器页面代理添加到其他网站。
  • 使用CORS 。


文章来源: Extracting data from website with XSLT