如何将XML文件与XSLT文件进行链接?

问题描述:

如何将XML文件与XSLT文件进行链接?

http://en.wikipedia.org/wiki/XSLT

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

的例子似乎是独立的XML和XSLT文件。他们不需要被链接?或者你会以某种方式将它们放入同一个文件中?否则,一个文件如何知道如何从另一个文件中吸取数据?

+1

我同意一些W3Schools页面,比如那个,是不够的。他们可以很容易地提到链接样式表,就像[XSLT - Transformation](http://www.w3schools.com/xsl/xsl_transformation.asp)中所做的那样。 – user34660 2015-07-11 20:48:17

您可以将XML声明

<?xml-stylesheet type="text/xsl" href="yourxsl.xsl"?> 
+3

这是要放入XML(数据)文件吗?这是唯一的方法,还是可以告诉XSLT文件从哪个XML文件获取数据,或者是否有第三个文件包含带有XSLT文件的XML文件? – 2010-08-11 08:48:43

+0

如果您使用Altova XMLSpy,则可以在子句下添加例如。你可以在那里使用相对或绝对的URL /路径[这里的评论解析器好像占用了我网址的http://前缀]。其他工具可能具有相似的语法。如果可以在XSL文件中使用某些标准语法(因为有这种情况,这种情况下XML文件是远程的,您不能触摸它) – 2014-08-15 18:05:50

+0

替代方案可能是将XML文件包含到另一个XML中文件以某种方式指定了样式表,但不知道这是否简单(可能需要专门编写XPath等) – 2014-08-15 18:10:12

后加上这个,你需要一个外部工具或库应用XSLT转换为XML。你如何做到这一点取决于你的编程环境,但是对于.Net,XslCompiledTransform是用于将Xslt转换应用于一片Xml(文件或内存中的Xml)的类。

另外,您可以使用Microsoft命令行工具xslt.exe - 您需要自己研究如何在其他编程语言/操作系统中执行相同的操作。

您也可以在HTML页面的转换:

<script type="text/javascript"> 
    var xml = new ActiveXObject("Microsoft.XMLDOM") 
    xml.async = false 
    xml.load("some_xml.xml") 
    var xsl = new ActiveXObject("Microsoft.XMLDOM") 
    xsl.async = false 
    xsl.load("some_xsl.xsl") 
    document.write(xml.transformNode(xsl)) 
</script> 
+0

如果它不是IE? – 2010-08-11 10:41:31

+0

你有样品在:http://www.w3schools.com/xml/xml_parser.asp 关于如何在现代浏览器中做到这一点:) – 2010-08-11 10:59:43

一个文件不知道“在数据吸”其他文件,因为这些文件是不是会做处理。

某种XSLT处理器可以做到这一点,它将被告知要处理什么的方式各不相同,因此它可以处理不同的用例。

在呈现整个XML文档的变换时,它被显示在浏览器中,则处理指令的情况下:

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> 

(真正它应该是“文本/ xml”的该类型因为这是一个XSL文档的MIME类型,但这是浏览器战争的尾声,浏览器功能的实现通常比常识的速度更快)。

如果您使用某种类型的库以编程方式控制转换(对于客户端JavaScript和任何语言的库都有对象,您可能需要这样做),那么您已经有足够的控制权详细说明由什么改变了什么。这里包括一些有趣的案例。

  1. 你甚至可以拥有一个包含内容节点和变换节点的文档,挑选出来并运行变换。

  2. 如果您在多个XML文档上运行相同的转换,调用某种类型的“PreCompile()”方法或类似方法通常会更高效,这会在该调用中受到影响,从而使所有后续转换。

  3. 您可以将值传递给XSLT中的*参数。