使用XSLT从网站提取数据
我在学习XSLT,并遇到了一个问题。我想要做的是从网站中提取一些数据,使用xslt模板进行转换,最后将其显示在我自己的xhtml页面中。使用XSLT从网站提取数据
可以说我有一个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>
样式表但这并没有真正跨浏览器的工作(铬而已,因为在我看来) 。一个原因可能是阻止加载外部页面的XSS安全功能。
我很抱歉,但它不适用于我。它只会产生空的身体。 –
如果您使用“--disable-web-security”开关启动Chrome,那么它适用于我。不确定其他浏览器是否具有类似的开关,但是当然,您不能要求网页的观看者重新启动浏览器,以关闭安全功能来规避XSS阻塞。 –
所以没有其他办法可以做到这一点? :( –
一对夫妇的方式来解决XSS限制......看到AJAX and Cross-Site Scripting to Read the Header
- 到代理添加本地PHP或其他服务器页面到其他网站。
- 使用CORS。
谢谢你的回答。经过进一步的研究,我发现这似乎是解决方案。 –
+1有用的链接:) –
这是一个'多少字符串'的问题。你想要提取什么,你的服务器是什么,你有什么工作 – Woody