我正在尝试学习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文件中。
如果您发现我的解释令人困惑,请询问,我会尝试更好地解释这个问题。
EDIT。我举个例子。假设我们有这个页面:http://www.w3.org/TR/xhtml1/。我想开发XSLT文档,从Full table目录中提取章节和章节的标题,并将它们放入我自己的xml文件中的表中。 我遇到的问题是如何在我的xslt文件中引用页面http://www.w3.org/TR/xhtml1/以便它在其节点上工作(此页面用xhtml编写,所以我不必担心关于将html转换为xml)。
EDIT2。经过进一步的研究,似乎Thomas W.的答案是问题的解决方案,但你必须处理XSS问题(LarsH答案中的提示)。
答案 0 :(得分: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安全功能。
答案 1 :(得分:1)
解决XSS限制的几种方法......请参阅AJAX and Cross-Site Scripting to Read the Header