使用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和跨站点脚本来阅读标题
上一篇: Extracting data from website with XSLT
下一篇: Has there ever been any competitive markup language to X/HTML?