经常被问到的关于扩展样式单转换语言(XSLT)的问题 (From MSXML 4.0 SDK)解答(
转帖)
Frequently Asked Questions about XSLT
-------------------------------------------------------------------
Translated By: Belltree <belltree@163.com>
-------------------------------------------------------------------
下面的列表包括了经常被问到的关于扩展样式单转换语言(XSLT)的问题。
1.为什么我的转换在Internet Explorer中出错了?
2.我怎样才能从代码中自动运行XSLT转换?
3.我需要在Internet Explorer中使用一个不同的XSLT命名空间吗?
4.我已经安装了Microsoft XML Parser (MSXML 4.0)。我的程序怎么不用它?
5.MSXML 4.0是不是提供了一个100符合标准的XSLT处理器?
6.Internet Explorer 5.5是不是提供了一个完全符合标准的XSLT处理器?
7.MSXML 4.0是一个产品版本吗?
8.为什么在线MSDN的XSL文档和XSLT规范有这么多差别呢?
9.我要从哪里才能找到MSXML遵从标准的文档?
10.怎样才能从命令行调用MSXML来做XSLT的批处理?
11.我已经写了很多使用老式IE版本的XSL,我该怎么办?
1.为什么我的转换在Internet Explorer中出错了?
在1998年Microsoft Internet Explorer 5.0发布的时候,XSL只有一个工作草案,根本没有XSLT推荐。所以,包含在Internet Explorer的那个版本的MSXML只支持XSL。虽然现在有一个最终的XSLT推荐,但仍有安装了不支持XSLT版本MSXML的计算机。结果是,人们通常就会询问Microsoft为什么XSLT操作在Internet Explorer 5.0 或5.5不工作。很多人都没有意识到他们的IE版本使用基于XSL的MSXML版本,而不是XSLT。
如果你的XSLT转换在Internet Explorer 5.0 或 5.5失败,你应该安装MSXML 3.0或Internet Explorer 6.0。你不能通过Internet Explorer 5.0 或5.5使用MSXML 4.0,你必须直接写代码。
2.我怎样才能从代码中自动运行XSLT转换?
你可以使用Microsoft JScript, Microsoft Visual Basic Scripting Edition (VBScript), Microsoft Visual Basic, C++或其他任何一种支持COM的语言,包括Perl,来对一个XML文档进行XSLT转换。
下面的 Visual Basic 代码调用一个依靠MSXML 4.0的转换。这个代码例子使用CreateObject("MSXML2.DOMDocument")语法而不是MSXML 2.x版本的CreateObject("MSXML.DOMDocument")。使用"MSXML2"保证你能够调用当前最新的XSLT处理器,而不是1998年的工作草案版本。这个例子也告诉你如果你的转换出错的话,如何获得详细的出错信息。如果你的转换没有结构的话(非XML),将xmlSource.ValidateOnParse=True换成xmlSource.ValidateOnParse=False。这一步避免数据非良构而产生错误。
Dim xmlSource As Object
Dim xmlXForm As Object0D Set xmlSource = CreateObject("Msxml2.DOMDocument")
Set xmlXForm = CreateObject("Msxml2.DOMDocument")
xmlSource.validateOnParse = True
xmlXForm.validateOnParse = True
xmlSource.async = False
xmlXForm.async = False
xmlSource.loadXML Text3.Text ' This loads the text that I want _
to transform
If Err.Number <> 0 Then
strErr = Err.Description & vbCrLf
strErr = strErr & xmlSource.parseError.reason & " line: " & _
xmlSource.parseError.Line & " col: " & _
xmlSource.parseError.linepos & " text: " & _
xmlSource.parseError.srcText
MsgBox strErr, vbCritical, "Error loading the XML"
0A GoTo bail
End If
xmlXForm.loadXML Text1.Text ' This loads the XSLT transform
If Err.Number <> 0 Then
strErr = Err.Description & vbCrLf
strErr = strErr & xmlSource.parseError.reason & " line: " & _
xmlSource.parseError.Line & " col: " & _
xmlSource.parseError.linepos & " text: " & _
xmlSource.parseError.srcText
MsgBox strErr, vbCritical, "Error loading the Transform"0D GoTo bail
End If
Text2.Text = xmlSource.transformNode(xmlXForm) 'This transforms _
the data in xmlSource0D If Err.Number <> 0 Then
strErr = Err.Description & vbCrLf
strErr = strErr & xmlSource.parseError.reason & " line: " & _
xmlSource.parseError.Line & " col: " & _
xmlSource.parseError.linepos & " text: " & _
xmlSource.parseError.srcText
MsgBox strErr, vbCritical, "Error executing the Transform"
GoTo bail
End If
Set xmlSource = Nothing
Set xmlXForm = Nothing
3.我需要在Internet Explorer中使用一个不同的XSLT命名空间吗?
不。使用标准的xmlns:xsl="http://www.w3.org/1999/XSL/Transform"语法。如果你使用这个命名空间而Internet Explorer返回错误的话,有可能你使用了一个早期版本的MSXML,不支持XSLT。如果你有旧的XSLT文件,但不想转换成XSLT文件,你可以依旧使用xmlns:xsl="http://www.w3.org/TR/WD-xsl"命名空间声明。要将XSL文件转换成XSLT文件,可以使用XSL to XSLT Converter 1.1,可以从MSDN Online Downloads下载。
4.我已经安装了Microsoft XML Parser (MSXML 4.0)。我的程序怎么不用它?
如果你从一种编程语言中调用你的转换,可能是你没有使用正确的ProgID。你必须使用版本无关ProgID。下面的Microsoft Visual Basic代码展示了使用正确的语法创建一个DOMDocument对象来装入一个XSLT文件。
使用版本无关ProgID的Visual Basic
Dim xsltDoc
Set xsltDoc = CreateObject("Msxml2.DOMDocument.4.0")
5.MSXML 4.0是不是提供了一个100符合标准的XSLT处理器?
不像MSXML 3.0以前的版本,MSXML 4.0中的XSLT处理器是高度符合XSLT规范标准的。更多的信息,请看Supported XSLT Features。
6.Internet Explorer 5.5是不是提供了一个完全符合标准的XSLT处理器?
不。Microsoft Internet Explorer 5.5包含的MSXML版本不支持XSLT。
7.MSXML 4.0是一个产品版本吗?
不。只是一个Technology Preview。MSXML 3.0是最终产品版本。
8.为什么在线MSDN的XSL文档和XSLT规范有这么多差别呢?
在写这个的时候,在线MSDN文档包括MSXML 2.5相关的信息,只包括XSL,而没有XSLT。MSXML 4.0产品发布后MSDN的MSXML文档将会很快更新。值得提醒的是,你可以从XML Developer Center at MSDN.microsoft.com/xml下载MSXML 4.0 SDK,这个包括MSXML 4.0文档。文档被安装在C:\Program Files\Microsoft XML Parser SDK\Docs\xmlsdk40.chm。要看这个文档的话,双击xmlsdk40.chm。更多的信息,请看Supported XSLT Features。
9.我要从哪里才能找到MSXML遵从标准的文档?
每一个MSXML新的发布都会有一个描述已知问题的Bug列表,如错误代码或者没有完全实现的特性。如果你发现一个bug或者没有清楚提及的实现点,请使用XML文档Feedback form发送feedback到XML documentation team。要使用这个form,点击在文档右上角的Feedback图标(信封)。
10.怎样才能从命令行调用MSXML来做XSLT的批处理?
由于MSXML是一个COM对象,你可以写VBScript, JScript, 或者其他的 Microsoft Windows Script Host (WSH)文件来在命令行加载MSXML。Microsoft提供了一个XSLT命令行工具,MSXSL.EXE,可以使用Microsoft XSL处理器来进行命令行方式的XSL转换。MSXSL.EXE是一个小的(~11K)命令行工具,调用MSXML4.DLL来进行转换的实际工作。MSXSL.EXE可以在位
to ChinaOK (蓝蝶)
感谢你为大家转贴。但我认为这份文档已经过时了。请参考最新的xml4.0帮助文档。
现在的情况至少应该有以下几处更新。
7. xml4.0是一个产品版本,现在叫做Micro$oft XML Core Services 4.0
2. 示例代码有问题。(很遗憾,在xml的最终帮助文件中还是使用的这个例子。)
错误的原因在于从xml4.0开始,xml只支持side-by-side的安装模式。在这种模式下,xml4.0不能成为缺省的xml/xslt解析器。因此使用CreateObject("Msxml2.DOMDocument")很可能创建的是xml3的对象。XP应该没有问题,但至少在Win2000下如此。正确的做法是指明版本号。如同第4条的例子。
4. 翻译错,“版本无关”应为“版本相关”(Version-dependent)。大家没觉得这一段自相矛盾吗?
无论如何,谢谢Belltree <belltree@163.com>。
分享到:
相关推荐
其中包括:对XML模式语言的支持,更快的分析器和XSLT引擎,对XML流更好的处理,更好的一致性支持。MSXML 4.0并不是MSXML 3.0的替代产品,因为在3.0中的一些过时功能已经在4.0中彻底去除了。所以4.0可以和3.0(甚至更...
Microsoft XML 4.0 Parser SDK
msxml是微软推出的xml语言解析器,用来解析所有由微软软件生成的xml标准文档,这是msxml4.0 sp3版本,也是目前msxml4.0版本中最完善的版本。由于msxml各个版本之间是互相独立的,所以一般用户都需要同时安装多个...
java_xslt转换xml
xslt-微服务基于消息的微服务,用于按需可扩展样式表语言转换(XSLT)
此存储库包含 MusicXML 乐谱的转换。 转换对 XML 乐谱文件进行操作,并作为 XSLT 实现。 为每个转换提供单元测试。测试是使用XSpec框架编写的。 先决条件 所有样式表只需要 XSLT 1.0。一些样式表需要一些 EXSL ...
xslt 扩展 exslt PDF教程
xslt手册.chm java实现xslt 简单的 Xalan 扩展函数 - 工程 xslt知识点速查手册.doc 2 Javascript XSLT 处理XML文件(IE and Firefox).doc Saxon 剖析 XSLT 处理器.doc
基于XSLT的XML文档转换技术基于XSLT的XML文档转换技术基于XSLT的XML文档转换技术基于XSLT的XML文档转换技术基于XSLT的XML文档转换技术
XML内容管理应用程序的增长刺激了对XSLT和Xpath技能的要求.本入门教程提供了XSLT处理模型的...XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。 XPath 是一种用于在 XML 文档中进行导航的语言。
使用XSLT将XML文档转换成HTML文档.
这是个很好的,用xslt转换,修改xml的好例子!
实验3XML文件映射与转换(使用XSLT和XPath)
ASP处理XSLT转换XML的实现 使用ASP处理XSLT转换XML比较简单,思路如下:创建一个XSLTemplate的对象,再创建一个XMLDOM对 象,然后在家Xml文件和XSLT文件,最后使用方法transform即可,包含到类里面,具体代码...
在计算机科学中,XSLT是扩展样式表转换语言(Extensible Stylesheet Language Transformations)的简称,这是一种对XML文档进行转化的语言,XSLT中的T代表英语中的“转换”(transformation)。它是XSL...
这是一篇关于如何使用 java 对xslt进行扩展的原创文档。
支持大数据量GML到SVG转换的XSLT优化处理器.pdf
XSLT是万维网联盟(W3C)最新提出的一种用来转换XML文档结构的说明性计算机语言,随着网络时代的发展,它的应用场合越来越广泛,影响力也越来越大。本书共分四部分,从XSLT的基本概念开始,详细讨论了基本知识点、...
利用XSLT转换XML.pdf利用XSLT转换XML.pdf利用XSLT转换XML.pdf利用XSLT转换XML.pdf
This follow up to Tennison's Beginning XSLT, has been updated to accomodate the revised XSLT standard. Part one of this book introduces XML and XSLT at a comfortable pace, and gradually demonstrates ...