`
xdw1626
  • 浏览: 171420 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

常被问到的关于扩展样式单转换语言(XSLT)的问题 (From MSXML 4.0 SDK) 解答

阅读更多
经常被问到的关于扩展样式单转换语言(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>。  
分享到:
评论

相关推荐

    msxml4.0 sdk (sp3)

    其中包括:对XML模式语言的支持,更快的分析器和XSLT引擎,对XML流更好的处理,更好的一致性支持。MSXML 4.0并不是MSXML 3.0的替代产品,因为在3.0中的一些过时功能已经在4.0中彻底去除了。所以4.0可以和3.0(甚至更...

    Microsoft XML 4.0 Parser SDK

    Microsoft XML 4.0 Parser SDK

    msxmlchs.msi

    msxml是微软推出的xml语言解析器,用来解析所有由微软软件生成的xml标准文档,这是msxml4.0 sp3版本,也是目前msxml4.0版本中最完善的版本。由于msxml各个版本之间是互相独立的,所以一般用户都需要同时安装多个...

    java_xslt转换xml

    java_xslt转换xml

    xslt-microservice:基于消息的微服务,用于按需可扩展样式表语言转换(XSLT)

    xslt-微服务基于消息的微服务,用于按需可扩展样式表语言转换(XSLT)

    MusicXML 乐谱的转换_XSLT_代码_下载

    此存储库包含 MusicXML 乐谱的转换。 转换对 XML 乐谱文件进行操作,并作为 XSLT 实现。 为每个转换提供单元测试。测试是使用XSpec框架编写的。 先决条件 所有样式表只需要 XSLT 1.0。一些样式表需要一些 EXSL ...

    xslt 扩展PDF教程

    xslt 扩展 exslt PDF教程

    xslt资料大全(xslt扩展函数)

    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文档转换技术基于XSLT的XML文档转换技术

    《XSLT与XPath入门:转换XML文档与数据》 [PDF]

    XML内容管理应用程序的增长刺激了对XSLT和Xpath技能的要求.本入门教程提供了XSLT处理模型的...XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。  XPath 是一种用于在 XML 文档中进行导航的语言。

    使用XSLT将XML文档转换成HTML文档

    使用XSLT将XML文档转换成HTML文档.

    xslt例子(转换修改xml)

    这是个很好的,用xslt转换,修改xml的好例子!

    实验3XML文件映射与转换(使用XSLT和XPath)

    实验3XML文件映射与转换(使用XSLT和XPath)

    ASP处理XSLT转换XML的实现

    ASP处理XSLT转换XML的实现 使用ASP处理XSLT转换XML比较简单,思路如下:创建一个XSLTemplate的对象,再创建一个XMLDOM对 象,然后在家Xml文件和XSLT文件,最后使用方法transform即可,包含到类里面,具体代码...

    Xslt语法参考手册.pdf

    在计算机科学中,XSLT是扩展样式表转换语言(Extensible Stylesheet Language Transformations)的简称,这是一种对XML文档进行转化的语言,XSLT中的T代表英语中的“转换”(transformation)。它是XSL...

    java 扩展 xslt

    这是一篇关于如何使用 java 对xslt进行扩展的原创文档。

    支持大数据量GML到SVG转换的XSLT优化处理器.pdf

    支持大数据量GML到SVG转换的XSLT优化处理器.pdf

    XSLT从入门到精通(PDG)

    XSLT是万维网联盟(W3C)最新提出的一种用来转换XML文档结构的说明性计算机语言,随着网络时代的发展,它的应用场合越来越广泛,影响力也越来越大。本书共分四部分,从XSLT的基本概念开始,详细讨论了基本知识点、...

    利用XSLT转换XML.pdf

    利用XSLT转换XML.pdf利用XSLT转换XML.pdf利用XSLT转换XML.pdf利用XSLT转换XML.pdf

    Beginning XSLT 2.0 From Novice to Professional

    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 ...

Global site tag (gtag.js) - Google Analytics