使用公开可用的XSLT转换XML

使用公开可用的XSLT转换XML,xml,xslt,Xml,Xslt,我没有太多的XSLT实践经验,所以我需要您在这个问题上的“最佳实践”帮助。XML自动生成并发送给用户(电子邮件等)。此XML包含以下标题元素(由于编辑器问题,开始和结束元素标记被删除): XSLT已上载并在给定的URL上可用。 应用此转换后,用户打开收到的XML的“标准/常规”方式是什么?(当我尝试使用浏览器时,会出现跨域错误)。 是否有可能(以及如何)安排事情,以便用户只需双击附加的XML即可看到转换后的文档 另外,当我尝试用MS Excel打开XML时(这给了我一个应用转换的选项),与我使用

我没有太多的XSLT实践经验,所以我需要您在这个问题上的“最佳实践”帮助。XML自动生成并发送给用户(电子邮件等)。此XML包含以下标题元素(由于编辑器问题,开始和结束元素标记被删除):

XSLT已上载并在给定的URL上可用。 应用此转换后,用户打开收到的XML的“标准/常规”方式是什么?(当我尝试使用浏览器时,会出现跨域错误)。 是否有可能(以及如何)安排事情,以便用户只需双击附加的XML即可看到转换后的文档


另外,当我尝试用MS Excel打开XML时(这给了我一个应用转换的选项),与我使用浏览器时相比(看起来还可以)是相当“混乱”(缺少边框等),尽管我使用的是非常标准和简单的HTML。。没有花哨的东西。

我不认为向“用户”发送XML文件是个好主意。为什么不为他们进行转换并将结果HTML文件发送给他们?或者(最好是IMHO)使用其他一些普遍接受的格式,如PDF

当我尝试用MS Excel打开XML时(这给了我一个选择 应用转换)相当“混乱”(缺少边框等) 与使用浏览器相比(看起来还行),尽管我使用的是 标准和简单的HTML。。没有花哨的东西


基于这么少的信息(没有,真的)很难说,但这可能与Excel不是浏览器有关。

尽管浏览器支持XSLT,但实际上,大多数生成HTML的XSLT是在服务器上或脱机批处理过程中运行的,而不是在浏览器中运行如果可能,在服务器或脱机批处理过程中而不是在浏览器中运行XSLT。

如果必须在浏览器中转换XML,请注意一些严重的限制和问题:

  • 任何主流浏览器都不支持XSLT2.0
  • 浏览器安全模型在影响XSLT处理的方式上有所不同。 这可能是开发或测试过程中遇到挫折的主要原因 分发依赖于基于浏览器的XSLT的文档。
    • 正如您已经遇到的,跨域限制可能是一个问题 问题
    • 虽然Firefox将允许本地加载的XSLT文件运行,但Chrome 不会
  • 注意:它不是“头元素”,而是一条处理指令。您应该能够将它一字不差地粘贴到问题中,它应该是这样的:

    <?xml-stylesheet type="text/xsl" href="http://example.com/myvisualisation.xslt"?>
    
    
    
    如果您的文档实际上将其表示为元素[错误]

    <xml-stylesheet type="text/xsl" href="http://example.com/myvisualisation.xslt"/>
    
    
    
    那么到XSLT的链接肯定会失败


    最后注意:应单独询问MS Excel中的XML问题,并添加更多详细信息。

    基本上,我向最终用户发送了一个包:PDF(我的打印版本)+XML(用于处理的原始数据)+可视化(原始数据)。在需要包含XSLT可视化的地方,我必须遵循一些规则。如果我把它包括进来,或者将它上传到web的某个地方,用户仍然不能简单地通过dbl单击XML并看到它被转换——或者他可以吗。。这就是我想弄明白的。@hpet这里的问题是标准化。没有普遍接受的默认应用程序可以打开XML文件(例如,与HTML不同,您可以假设HTML将在几乎任何系统上的浏览器中打开)。这是在浏览器安全问题之前。我不确定您的规则是什么,但由于“XSLT可视化”过程的最终结果是一个HTML文档,我看不出您为什么不能发送它。@hpet这里的另一个问题是什么是“用户”?作为一名用户,我不希望任何人向我发送XML文件。作为一个“老练的用户”,我希望您将XML和XSLT文件发送到同一个包中,并让我来处理转换。将XML文件链接到(本地)XSLT将是一个很好的补充,以防我想在浏览器中打开XML。-顺便说一句,您是否尝试过同时包含本地样式表和服务样式表的链接?我可以轻松地在同一个包中发送XSLT。如何建立本地链接?只是一个文件名?用户可以将XML文件导入到应用程序中进行处理,XSLT用于以精确的XML“快速”可视化数据——因此,我希望提供一些“业余用户友好”的方式来可视化包含的XML。XML已签名,使用XSLT预览将显示有效的数据-包括HTML将不相同(可选包含PDF)。“如何创建本地链接?”假设XML和XSLT位于同一目录中:
    --“包括HTML将不一样”为什么不呢?转换的结果(你说)是HTML。浏览器将以相同的方式显示相同的HTML,无论转换是刚刚“实时”完成的,还是三天前完成的。抱歉,我没有用此标题/处理指令正确表达我的意思。但是,我是对的。请阅读一篇评论文章,了解更多关于我正在努力实现的细节。关于Excel,我的错,这只是一个无关紧要的次要问题。问题是,我认为XML+XSLT更像是“即插即用”,而且在本地(非服务器环境中)也更容易应用——曾经有一段时间,XSLT在浏览器中为XML设置样式就像CSS为HTML设置样式一样是即插即用的,但是,唉,事实并非如此。
    <xml-stylesheet type="text/xsl" href="http://example.com/myvisualisation.xslt"/>