目前我使用:
<?xml-stylesheet type="text/xsl" href="XSL.xsl"?>
Run Code Online (Sandbox Code Playgroud)
将XSL链接到XML.
如果我的xml在这里:www.externaldomain.com/rss.xml(在我的域之外)我怎样才能将XSL链接到XML?
我可以将XSL指向文件或链接吗?
Mad*_*sen 14
您可以通过实体引用创建包含远程XML文件的XML内容的本地XML文件.
下面的示例将为您提供包装器文档元素中的远程XML文件的内容.
然后,您可以在本地XML文件中包含样式表处理指令.
但是,由于本地文件具有包装器文档元素,因此您可能需要指向使用xsl:import的"包装器XSLT" 以从包装器元素内的内容开始导入原始XSL.xsl和apply-templates.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wrapper [
<!ENTITY content SYSTEM "http://stackoverflow.com/feeds">
]>
<?xml-stylesheet type="text/xsl" href="XSL.xsl" ?>
<wrapper>
&content;
</wrapper>
Run Code Online (Sandbox Code Playgroud)
您无法使用“纯”xml+xslt(*) 来实现此目的。一些外部代码需要识别 xml 和应转换它的 xslt。
由于您似乎正在转换 XML,我猜测您是在网络浏览器中执行此操作。
您可以使用 javascript 来完成此操作,如w3schools 上所示。但是,如果您执行基于 javascript 的请求(即 AJAX/XHR),跨域限制仍然适用:如果原始服务器未设置适当的 CORS 标头以允许跨域 javascript 访问,则您需要代理通过您自己的服务器发送 xml 请求。
(*):Mad 的答案使用实体引用巧妙地将外部 xml 嵌入到包含文档中。这绝对值得一试,但请注意,这种基于实体的包含已在多个信息泄露泄漏中使用,这就是为什么它通常不在 xml 解析器中启用(特别是,这不应该能够破坏浏览器中的 CORS)。你只需根据你的情况尝试一下即可。
| 归档时间: |
|
| 查看次数: |
19337 次 |
| 最近记录: |