`
xdw1626
  • 浏览: 174525 次
  • 性别: 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

    3. **示例代码**:SDK通常会附带一些示例程序,演示了如何使用MSXML4.0进行XML处理,如创建DOM树、执行XPath查询、应用XSLT样式表等。 4. **开发指南**:SDK可能包含开发指南,指导开发者如何在不同场景下选择合适...

    MSXML 4.0 sp2 parser sdk

    SDK(Software Development Kit)则是一套为开发人员提供的工具、文档和技术支持,帮助他们利用MSXML 4.0 SP2进行XML应用程序的开发。 MSXML 4.0 SP2解析器是SDK的核心组件,它实现了W3C(World Wide Web ...

    MSXML 4.0 SP2 Parser and SDK

    10. **SDK(Software Development Kit)**:MSXML 4.0 SP2的SDK包含了开发所需的头文件、库文件和文档,帮助开发者快速上手并构建XML相关的应用程序。 总的来说,MSXML 4.0 SP2是开发XML应用程序的重要工具,它的...

    msxml4.0 sdk (sp3)

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

    MSXML 4.0 SDK

    SDK中的两个主要文件,`xmlsdk4.chi` 和 `XMLSDK4.chm`,是MSXML 4.0 SDK的重要组成部分: 1. `xmlsdk4.chi`:这是一个索引文件,用于帮助系统快速定位和访问CHM(Compiled Help Manual)文件中的内容。CHM是一种...

    msxml 4.0 SP3下载

    4. **XSLT支持**:XSLT用于转换XML文档,MSXML 4.0集成了XSLT处理器,可以将XML文档按照指定的样式表转换成其他格式,如HTML或新的XML文档。 5. **XML Schema支持**:MSXML 4.0支持XML Schema,这是一种用于定义XML...

    msxml4.0-11

    MSXML(Microsoft XML Core Services)是由微软公司提供的一个核心组件,...通过安装提供的"amsxml4.0-11.msi"文件,用户可以确保系统能够正确运行依赖MSXML 4.0的软件,同时享受到该版本提供的任何增强功能和修复。

    msxml4.0_SP3.rar

    MSXML 是微软开发的一个软件组件,它允许应用程序在Windows操作系统上解析和处理XML(可扩展标记语言)文档。这个补丁主要用来修复MSXML 4.0中的已知问题,提高其性能和安全性。 【描述】中的"虚拟引擎的补丁,...

    msxmlsdk4.0

    MSXML,全称为Microsoft XML Core Services..."xmlsdk4.chi"和"xmlsdk4.chm"这两个文件是开发者理解和使用MSXML 4.0的关键参考资料,涵盖了从基本概念到高级特性的全方位介绍,是构建基于XML的应用程序不可或缺的助手。

    微软 msxml 4.0

    在Windows操作系统中,MSXML 4.0被广泛用于Web应用程序、服务器脚本以及桌面应用,以实现XML数据的解析、验证和转换。 **核心功能** 1. **XML解析器**:MSXML 4.0包含了高效的XML解析器,能够解析XML文档并将其...

    MSXML 4.0 和MSXML 6.0解析器

    MSXML,全称为Microsoft XML Core Services,是微软公司推出的一系列用于处理XML文档的API,主要功能包括XML文档的解析、验证、转换和查询。在提供的信息中,我们关注的是MSXML的4.0和6.0两个版本,这两个版本在XML...

    MSXML sdk 3.0、4.0、5.0、6.0

    - MSXML 4.0:增强了安全性,修复了一些已知问题,同时添加了对XSLT 1.0的完整支持。 - MSXML 5.0:主要针对.NET Framework进行了优化,提高了与.NET应用程序的集成度。 - MSXML 6.0:设计时更注重性能和稳定性,...

    xml4.0 sdk

    XML(eXtensible Markup Language)是一种用于标记数据的语言,其设计目的是传输和存储...通过阅读和分析这个文档,你可以更好地掌握XML 4.0 SDK的使用方法,从而在实际项目中更有效地利用XML这一强大的数据交换语言。

    MSXML SDK6 CHM 帮助文档

    7. **调试与错误处理**:SDK还会提供关于如何调试MSXML应用程序以及处理可能遇到的错误的信息,这对于开发者解决问题至关重要。 8. **API参考**:详细的API参考部分列出了所有可用的接口、方法、属性和常量,是...

    msxml6.0 xml sdk

    MSXML6.0的XSLT处理器支持XSLT 1.0规范,可以执行复杂的样式表转换任务。 4. **XPath(XML Path Language)引擎**:XPath是一种语言,用于在XML文档中查找信息。MSXML6.0的XPath引擎允许开发者通过简洁的表达式来...

    MsXML4 运行库

    2. **XSLT转换**: MsXML4支持XSLT(Extensible Stylesheet Language Transformations),可以将XML文档转换为其他格式,如HTML、XML或者文本。 3. **XPath查询**: 提供了XPath API,使得开发者可以通过路径表达式来...

    MSXML_4.0_SP3.zip

    总的来说,MSXML 4.0 SP3是XML开发中不可或缺的工具,尤其对于使用早期版本可能遇到问题的开发者,更新到SP3版本是解决系统问题的关键。安装并使用这个组件,可以帮助开发者更高效、安全地处理XML数据,提升应用程序...

    msxml.rar依赖包

    MSXML 4.0是MSXML的一个重要版本,它支持XML 1.0规范,并提供了许多功能,如DOM(Document Object Model)解析、SAX(Simple API for XML)解析、XPath查询以及XSLT转换等。 MSXML 4.0的特性包括: 1. **DOM解析器...

    xml SDK大全,包括3.0~6.0总共4个版本

    2. MSXML 4.0:在3.0的基础上,4.0版增加了XPath(XML Path Language)和XSLT(Extensible Stylesheet Language Transformations)支持,使开发者能更方便地查找XML节点和进行数据转换。同时,此版本还引入了性能...

    Microsoft XML 4.0 Parser SDK

    Microsoft XML 4.0 Parser SDK

Global site tag (gtag.js) - Google Analytics