| 相关分类 | |
| XML介绍(一) | |
|
发 布 者:cwq818 发布日期:2003-10-31 12:52 资源类别: 所属子类: 开发语言:其他开发语言 相关标签:xml 介绍 |
|
|
详细描述: XML部分: 1.XML是什么 XML,或称为可扩展标记语言(Extensible Markup Language),是一种可以用来创建自己的标记的标记语言。它由W3C创建,用来克服 HTML(Hypertext Markup Language)的局限。和 HTML 一样,XML 基于 SGML(Standard Generalized Markup Language)。XML 是为 Web 设计的。 2.HTML的局限 HTML文档告之浏览器如何显示信息,但它不能告之浏览器该信息的含义。这使得在HTML文档中查找信息非常困难。XML文档解决了这个局限。 3.XML的组成 有三个通用术语用来描述XML文档的组成部分:标记、元素和属性。 ●标记是左尖括号(<)和右尖括号(>)之间的文本。有开始标记和结束标记之分。 ●元素是开始标记、结束标记以及位于二者之间的所有内容。 ●属性是一个元素的开始标记中的名称-值对。 4.XML应用的关键领域 ●XML简化数据交换。因为不同组织(乃至同一组织的不同部门)很少就单一工具集形成标准,所以要使应用程序相互交流需要进行大量工作。使用 XML,每个组织可以创建单一的实用程序,该实用程序将该组织的内部数据格式转换成 XML,反之亦然。最好有这样的机会:这些组织的软件供应商已经提供了在它们的数据库记录(或 LDAP 目录,或采购订单等等)与 XML 之间进行相互转换的工具。 ●XML支持智能代码。。因为可以使 XML 文档结构化以标识每个非常重要的信息片段(以及这些片段之间的关系),所以可以编写无需人工干预就能处理这些 XML 文档的代码。软件供应商花费了大量时间和金钱来构建 XML 开发工具这一事实意味着编写那样的代码是相对简单的过程。 ●XML支持智能搜索。尽管搜索引擎这些年在稳步改进,但从搜索中得到错误的结果仍很常见。使用XML文档会给得到一个好得多的结果集。 5.XML文档规则 关于XML文档,有一点很重要:XML 规范需要解析器拒绝任何没有遵守基本规则的XML文档。 有三种XML文档: ●无效文档没有遵守 XML 规范定义的语法规则。如果开发人员已经在 DTD 或模式中定义了文档能够包含什么,而某个文档没有遵守那些规则,那么这个文档也是无效的。 ●有效文档既遵守 XML 语法规则也遵守在其 DTD 或模式中定义的规则。 ●格式良好的文档遵守 XML 语法,但没有 DTD 或模式。 根元素: XML文档必须包含在一个单一元素中。这个单一元素称为根元素,它包含文档中所有文本和所有其它元素。 元素不能重叠: XML元素不能重叠。 结束标记是必需的: 不能省去任何结束标记。如果一个元素根本不包含标记,则称为空元素;HTML 换行(<br>)和图像(<img>)元素就是两个例子。在XML文档的空元素中,可以把结束斜杠放在开始标记中。如<br />和<img />。 元素是区分大小写的: XML元素是区分大小写的。 属性必须有用引号括起的值: XML 文档中的属性有两个规则: ●属性必须有值 ●那些值必须用引号括起。 可以使用单引号,也可以使用双引号,但要始终保持一致。如果属性值包含单引号或双引号,则可以使用另一种引号来括起该值(如 name="Doug‘s car"),或使用实体", 代表双引号;使用 &apos, 代表单引号。实体是一个符号(如 "),XML解析器会用其它文本代替该符号(如 ")。 XML声明: 大多数 XML 文档以 XML 声明作为开始,它向解析器提供了关于文档的基本信息。建议使用 XML 声明,但它不是必需的。如果有的话,那么它一定是文档的第一样东西。 声明最多可以包含三个名称-值对(许多人称它们为属性,尽管在技术上它们并不是)。version 是使用的 XML 版本;目前该值必须是 1.0。encoding 是该文档所使用的字符集。该声明中引用的 ISO-8859-1 字符集包括大多数西欧语言用到的所有字符。如没有指定 encoding,XML 解析器会假定字符在 UTF-8 字符集中,这是一个几乎支持世界上所有语言的字符和象形文字的 Unicode 标准。 <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 最后,standalone(可以是 yes 或 no)定义了是否可以在不读取任何其它文件的情况下处理该文档。例如,如果 XML 文档没有引用任何其它文件,则可以指定 standalone="yes"。如果 XML 文档引用其它描述该文档可以包含什么的文件,则可以指定 standalone="no"。因为 standalone="no" 是缺省的,所以很少会在 XML 声明中看到 standalone。 XML文档中的其它项: ●注释:注释可以出现在文档的任何位置;它们甚至可以出现在根元素的前面或后面。注释以 <!-- 开始,以 --> 结束。注释不能在结束部分以外包含双连字符(--);除此之外,注释可以包含任何内容。最重要的是,注释内的任何标记都被忽略;如果希望除去 XML 文档的一块较大部分,只需用注释括住那个部分即可。(要恢复这个注释掉的部分,只需除去注释标记即可。) ●处理指令:处理指令是为使用一段特殊代码而设计的标记。 ●实体:<!-- Here‘s an entity: --> <!ENTITY dw "developerWorks"> 上面的示例为文档定义了一个实体。无论 XML 处理器在何处找到字符串 &dw;,它都会用字符串 developerWorks 代替该实体。 XML 规范还定义了五个可以用来替代不同的特殊字符的实体。这些实体是: < 代表小于符号 > 代表大于符号 " 代表一个双引号 ' 代表一个单引号(或撇号) & 代表一个“与”符号。 名称空间: XML 的能力来自它的灵活性,即您和我以及数百万其他人可以定义我们自己的标记来描述我们的数据。记得表示个人姓名和地址的样本 XML 文档吗?那个文档包括表示个人尊称的 <title> 元素,这是对元素名称非常合理的选择。如果您经营一家网上书店,您或许会创建一个表示书名的 <title> 元素。如果您经营一家网上抵押放款公司,您或许会创建表示一份财产名称的 <title> 元素。所有这些都是合理的选择,但它们都用相同的名称创建元素。如何分辨某个特定的 <title> 元素指的是人、书籍还是一份财产呢?可以使用名称空间。 要使用名称空间,您要定义一个名称空间前缀,然后将它映射至一个特殊字符串。下面介绍如何定义我们这三个 <title> 元素的名称空间前缀: <?xml version="1.0"?> <customer_summary xmlns:addr="http://www.xyz.com/addresses/" xmlns:books="http://www.zyx.com/books/" xmlns:mortgage="http://www.yyz.com/title/" > ... <addr:name><title>Mrs.</title> ... </addr:name> ... ... <books:title>Lord of the Rings</books:title> ... ... <mortgage:title>NC2948-388-1983</mortgage:title> ... 在该示例中,三个名称空间前缀是 addr、books 和 mortgage。请注意,为特定元素定义名称空间意味着该元素的所有子元素都属于同一名称空间。第一个 <title> 元素属于 addr 名称空间,因为其父元素 <addr:Name> 属于该名称空间。 最后要指出的是:名称空间定义中的字符串仅仅是字符串。对,这些字符串看似 URL,其实不是。您可以定义 xmlns:addr="mike",那也是有效的。名称空间唯一的重要性在于其唯一性;这就是为什么大多数名称空间定义看起来象 URL 的原因。XML 解析器不会到 http://www.zyx.com/books/ 去搜索 DTD 或模式,它只是把那个文本作为字符串使用。这有些令人困惑,但名称空间就是这样工作的。 6.定义文档内容 一种方法是使用文档类型定义(Document Type Definition),或简称 DTD。DTD 定义可以在 XML 文档中出现的元素、这些元素出现的次序、它们可以如何相互嵌套以及 XML 文档结构的其它详细信息。DTD 是最初的 XML 规范的一部分,与 SGML DTD 非常相似。 另一种方法是使用XML Schema。模式可以定义您能在 DTD 中使用的所有文档结构,它还可以定义数据类型和比 DTD 更复杂的规则。W3C 在提出最初的 XML 规范的几年之后开发了 XML Schema 规范。 文档类型定义: 请注意,DTD语法不同于普通的XML语法。尽管DTD的语法不同,但您仍可以将普通的注释放到DTD中。 DTD 中的符号: 逗号(,)表示项的列表。 问号(?)表示这一项是可选的,它可以出现一次或根本不出现。 加号(+)表示这一项必须至少出现一次,但可出现任意次。 星号(*)表示这一项可以出现任意次,包括零次。 竖线(|)表示选择列表,您只能从列表选择一项。 定义属性: ●定义在XML中使用的属性 ●定义哪些属性是必需的 ●定义属性的缺省值 ●列出给定属性的所有有效值 XML模式: 使用 XML 模式,您会有更多的能力来定义什么样的 XML 文档是有效的。它们与 DTD 相比有几个优势: XML模式使用XML语法。换句话说,XML 模式是一个 XML 文档。这意味着您可以象处理任何其它文档一样处理模式。例如,您可以编写一个 XSLT 样式表,该样式表将 XML 模式转换成具有自动生成的 JavaScript 代码的 Web 表单,其中的 JavaScript 代码可以验证您输入的数据。 XML模式支持数据类型。尽管 DTD 确实支持数据类型,但很明显这些数据类型是从发布的角度开发的。XML 模式支持 DTD 中的所有原始数据类型(诸如标识和标识引用之类的类型)。它们还支持整数、浮点数、日期、时间、字符串、URL 和其它对数据处理和验证有用的数据类型。 XML模式是可扩展的。除了 XML 模式规范中定义的数据类型以外,您还可以创建自己的数据类型,并且可以基于其它数据类型派生出新的数据类型。 XML模式有更强的表达能力。例如,您可以用 XML 模式定义任何 <state> 属性值不得超过 2 个字符,或定义任何 <postal-code> 元素的值必须与正则表达式 [0-9]{5}(-[0-9]{4})? 相匹配。您无法用 DTD 做这些事。 定义模式中的元素: XML模式用<xsd:element>元素定义XML元素。 XML模式用<xsd:complexType> 元素定义了新的数据类型。 XML模式用<xsd:sequence>元素定义了包含在元素中的元素的序列。 7.XML编程接口 XML有多种编程接口。这些接口为开发人员使用 XML 文档提供了一致的接口。有许多 API 可以使用;最流行和广泛使用的 API 中的四种:文档对象模型(Document Object Model (DOM))、用于 XML 的简单 API(Simple API for XML (SAX))、JDOM 和用于 XML 解析的 Java API(Java API for XML Parsing (JAXP))。 文档对象模型: 文档对象模型(通常称为 DOM)为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后您的代码就可以使用 DOM 接口来操作这个树结构。您可以遍历树以了解原始文档包含了什么,您可以删除树的几个部分,还可以重新排列树和添加新的分支,等等。DOM 由 W3C 创建,并且是该协会的正式建议书。DOM API 是解析 XML 文档非常有用的方法。 用于 XML 的简单 API : 为了解决 DOM 问题,XML-DEV 参与者们(由 David Megginson 领导)创建了 SAX 接口。SAX 的几个特征解决了 DOM 的问题: SAX 解析器向您的代码发送事件。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,它会告诉您。您可以决定什么事件对您重要,而且可以决定要创建什么类型的数据结构以保存来自这些事件的数据。如果您没有显式地保存来自某个事件的数据,它就被丢弃。 SAX 解析器根本不创建任何对象,它只是将事件传递给您的应用程序。如果希望基于那些事件创建对象,这将由您来完成。 SAX 解析器在解析开始的时候就开始发送事件。当解析器发现文档开始、元素开始和文本等时,代码会收到一个事件。您的应用程序可以立即开始生成结果;您不必一直等到整个文档被解析完毕。更妙的是,如果您只查找文档中某些内容,代码一旦找到所要找的东西就可以抛出一个异常。该异常会停止 SAX 解析器,然后代码用它找到的数据做它需要做的任何事。 JDOM: 用 DOM 和 SAX 模型完成某些任务时的困难使 Jason Hunter 和 Brett McLaughlin 感到失望,于是他们创建了 JDOM 包。JDOM 是基于 Java 技术的开放源码项目,它试图遵循 80/20 规则:用 DOM 和 SAX 20% 的功能来满足 80% 的用户需求。JDOM 使用 SAX 和 DOM 解析器,因此它是作为一组相对较小的 Java 类被实现的。JDOM 的主要特性是它极大地减少了您必须编写的代码数量。 用于 XML 解析的 Java API: 尽管 DOM、SAX 和 JDOM 为大多数常见任务提供了标准接口,但仍有些事情是它们不能解决的。例如,在 Java 程序中创建 DOMParser 对象的过程因 DOM 解析器的不同而不同。为了修正这个问题,Sun 发布了 JAXP(用于 XML 解析的 Java API,Java API for XML Parsing)。该 API 为使用 DOM、SAX 和 XSLT 处理 XML 文档提供了公共接口。JAXP 提供的诸如 DocumentBuilderFactory 和 DocumentBuilder 之类的接口为不同的解析器提供了一个标准接口。还有一些方法可以允许您控制底层的解析器是否可以识别名称空间以及是否使用 DTD 或模式来验证 XML 文档。 哪种接口适合您? 为了确定哪种接口适合您,您需要理解所有接口的设计要点,而且需要理解应用程序用您将要处理的 XML 文档来做什么。考虑下面的问题将有助于您找到正确的方法。 ●要用 Java 编写应用程序吗?JAXP 使用 DOM、SAX 和 JDOM;如果您用 Java 编写代码,那么您应使用 JAXP 将您的代码与各种解析器实现的细节隔离。 ●应用程序将如何部署?如果您的应用程序将要作为 Java applet 部署,那么您会希望使要下载的代码数量最小,别忘了 SAX 解析器比 DOM 解析器小。还要知道使用 JDOM 时,除了 SAX 或 DOM 解析器之外还要求编写少量的代码。 ●一旦解析了 XML 文档,还需要多次访问那些数据吗?如果您需要回过头来访问 XML 文件的已解析版本,DOM 可能是正确的选择。而 SAX 事件被触发时,如果您以后需要它,则由您(开发人员)自己决定以某种方式保存它。如果您需要访问不曾保存的事件,则必须再次解析该文件。而 DOM 自动保存所有的数据。 ●只需要 XML 源文件的少量内容吗?如果您只需要 XML 源文件的少量内容,那么 SAX 可能是正确的选择。SAX 不会为源文件中的每个东西创建对象;您要确定什么是重要的。使用 SAX,您要检查每个事件以了解它是否与您的需要有关,然后相应地处理它。更妙的是,一旦找到您正在寻找的东西,您的代码就会抛出一个异常来完全停止 SAX 解析器。 ●您正在一台内存很少的机器上工作吗?若是的话,不管您可能考虑到的其它因素是什么,SAX 是您的最佳选择。 8.XML标准(给出了一些有用的连接) XML 世界中存在多种标准。除了基本 XML 标准以外,其它标准定义了模式、样式表、链接、Web 服务、安全性和其它重要项目。 XML 规范:该规范(位于 w3.org/TR/REC-xml)定义了 XML 文档的基本规则。您也可以在 W3C 查找名称空间标准:w3.org/TR/REC-xml-names/。 XML Schema :XML Schema 语言定义成以下三个部分: 入门位于 w3.org/TR/xmlschema-0,它介绍了 XML 模式文档及其设计用途; 文档结构的标准位于w3.org/TR/xmlschema-1,它说明了如何定义 XML 文档的结构; 数据类型的标准位于w3.org/TR/xmlschema-2,它定义了一些常用数据类型以及创建新类型的规则。 XSL、XSLT 和 XPath : 可扩展样式表语言(Extensible Stylesheet Language(XSL))定义了一组元素(称为格式化对象),它们描述应该如何格式化数据。为清晰起见,通常将该标准称为 XSL-FO 以和 XSLT 进行区分。尽管它主要是设计用于生成高质量的可打印文档,但您也可以使用格式化对象从 XML 生成音频文件。XSL-FO 标准位于 w3.org/TR/xsl/。 用于转换的可扩展样式表语言(Extensible Stylesheet Language for Transformation(XSLT))是一个描述如何将 XML 文档转换成别的东西的 XML 词汇表。该标准位于w3.org/TR/xslt(结尾没有斜杠符号)。 XPath(XML 路径语言,XML Path Language)是描述 XML 文档中位置的语法。您使用 XSLT 样式表中的 XPath 来描述您希望转换 XML 文档的哪个部分。XPath 也用在其它 XML 标准中,这就是为什么它是独立于 XSLT 的标准的原因。XPath 在 w3.org/TR/xpath(结尾没有斜杠符号)中定义。 DOM : 文档对象模型定义了如何将 XML 文档转换为驻留内存的树结构。DOM 在 W3C 的许多规范中都有定义: 核心 DOM 定义 DOM 本身、树结构、以及代码遍历树时会发现的各种节点和异常。完整的规范在 w3.org/TR/DOM-Level-2-Core/。 事件定义对于树可以发生的事件,以及如何处理这些事件。该规范试图协调 Netscape 和 Internet Explorer 浏览器的版本 4 之后所支持对象模型之间的差异。该规范位于 w3.org/TR/DOM-Level-2-Events/。 样式定义程序如何访问 XSLT 样式表和 CSS 样式表。该规范位于 w3.org/TR/DOM-Level-2-Style/。 遍历和范围定义一些允许程序遍历树或定义树中节点范围的接口。可以在 w3.org/TR/DOM-Level-2-Traversal-Range/ 找到完整的规范。 视图为文档本身定义 AbstractView 接口。请参阅 w3.org/TR/DOM-Level-2-Views/ 以获得更多信息。 SAX、JDOM 和 JAXP : 用于 XML 的简单 API 定义了一些事件和接口,用于与符合 SAX 的 XML 解析器进行交互。可以在 www.saxproject.org 上找到完整的 SAX 规范。 Jason Hunter 和 Brett McLaughlin 创建的 JDOM 项目位于 jdom.org/。在 JDOM 站点,您可以找到代码、样本程序和其它能帮助您入门的工具。(有关在 developerWorks 上介绍 JDOM 的文章,请参阅参考资料)。 有关 SAX 和 JDOM 的重要一点是:二者都来自 XML 开发人员社区,而不是标准组织。它们获得的广泛接受是对全世界 XML 开发人员积极参与的回报。 您可以在 java.sun.com/xml/jaxp/ 找到所有与 JAXP 有关的内容。 链接和引用: 在 XML 世界中有两个用于链接和引用的标准:XLink 和 XPointer: XLink(XML 链接语言,XML Linking Language)定义将不同资源链接在一起的各种方法。您可以进行正常的点对点链接(就象用 HTML <a> 元素)或扩展的链接,后者可包括多点链接、通过第三方的链接以及定义转向给定链接的意义的规则。XLink 标准位于 w3.org/TR/xlink/。 XPointer(XML 指针语言,XML Pointer Language)使用 XPath 作为引用其它资源的方法。它还包括对 XPath 的一些扩展。可以在 www.w3.org/TR/xptr/ 找到该规范。 安全性: 有两个处理 XML 文档安全性的重要标准。一个是 XML 数字签名(XML Digital Signature)标准(w3.org/TR/xmldsig-core/),它定义了用于数字签名的 XML 文档结构。您可以为任何类型的数据创建 XML 数字签名,不管它是 XML 文档、HTML 文件、纯文本、二进制数据还是其它东西。您可以用数字签名来验证一个特定文件自签名后没有被修改过。如果您要签名的数据是 XML 文档,您可以将 XML 文档嵌入签名文件本身,这会使数据和签名的处理变得非常简单。 另一个标准用于加密 XML 文档。我们可以将 XML 文档编写得易于人们阅读和理解,尽管这样做很好,但如果文档落入坏人之手就会引起麻烦。XML 加密(XML Encryption)标准(w3.org/TR/xmlenc-core/)定义了如何加密 XML 文档的各部分。 将这些标准一起使用,您就能放心地使用 XML 文档了。我可以对一个重要的 XML 文档进行数字签名,生成一个包含 XML 文档本身的签名。然后我可以加密该文档(使用我的私钥和您的公钥)然后把它发送给您。当您收到文档时,您可以用您的私钥和我的公钥解密该文档;这可以让您知道是我发送的文档。(如果需要,您还可以证明我发送了文档)。一旦您解密了文档,您可以使用该数字签名确定文档没有经过任何修改。 Web 服务: Web 服务是一种新的重要的应用程序。Web 服务是一段可以用 XML 发现、描述和访问的代码。在这一领域有许多活动,但有三种主要的用于 Web 服务的 XML 标准: SOAP:最初是简单对象访问协议(Simple Object Access Protocol),SOAP 定义一个 XML 文档格式,该格式描述如何调用一段远程代码的方法。我的应用程序创建一个描述我希望调用的方法的 XML 文档,并传递给它所有必需的参数,然后应用程序通过网络将该 XML 文档发送给那段代码。代码接收 XML 文档、解释它、调用我请求的方法,然后发回一个描述结果的 XML 文档。SOAP 规范版本 1.1 位于 w3.org/TR/SOAP/。请访问 w3.org/TR/ 以了解 W3C 中 SOAP 相关的所有活动。 WSDL:Web 服务描述语言(Web Services Description Language)是一个描述 Web 服务的 XML 词汇表。编写一段接收 WSDL 文档然后调用其以前从未用过的 Web 服务的代码,这是可能的。WSDL 文件中的信息定义 Web 服务的名称、它的方法的名称、这些方法的参数和其它详细信息。您可以在 w3.org/TR/wsdl(结尾没有斜杠符号)找到最新的 WSDL 规范。 UDDI:统一描述、发现和集成(Universal Description, Discovery, and Integration)协议向 Web 服务注册中心定义 SOAP 接口。如果您有一段代码希望作为 Web 服务部署,UDDI 规范定义如何将您的服务描述添加至注册中心。如果您在寻找一段提供某种功能的代码,UDDI 规范定义如何查询注册中心以找到您想要的信息。有关 UDDI 的所有资料来源都可以在 uddi.org 找到。 其它标准: 还有许多其它的 XML 标准,我没有在这里深入介绍。除了象可伸缩向量图(Scalable Vector Graphic)(www.w3.org/TR/SVG/)、SMIL(同步多媒体集成语言,Synchronized Multimedia Integration Language)(www.w3.org/TR/smil20/)那样可广泛应用的标准外,还有许多特定于业界的标准。例如,HR-XML 协会已定义了许多用于人力资源的 XML 标准;您可以在 hr-xml.org 找到那些标准。 最后,要查找有关 XML 标准的优秀信息来源,请访问 xml.org/xml/registry.jsp 上的 XML 资源库。该站点的特点是有数百个用于各行各业的标准。 XSLT部分: 1.什么是 XSLT? XSLT 的最初目的是将信息内容与 Web 显示分离。如其最初定义那样,HTML 通过按抽象概念(如段落、重点和编号列表)定义显示来实现设备独立性。随着 Web 变得越来越商业化,出版人希望其输出质量能达到与印刷品相同的质量。这逐渐导致越来越多地使用具体显示控件,如页面上材料的明确字体和绝对位置。然而不幸的是完全可以预料其副作用,即将相同的内容传递到替代设备,如数字电视机和 WAP 电话(印刷业的行话再现效果)将会变得日益困难。 由于吸收了印刷业使用 SGML 的经验,在 1998 年初定义了一种标记语言 XML,它用于表示独立于显示的结构化内容。与 HTML 使用一组固定概念(如段落、列表和表)不同,XML 标记中使用的标记完全是用户定义的,其用意是这些标记应该与所关注的对象(如人、地点、价格和日期)相关。尽管 HTML 中的元素本质上都是印刷样式(虽然处于抽象级别),而 XML 的目标是元素应该描述实际对象。 W3C 已经定义了两个系列的样式表标准。第一个是在 HTML 中广泛使用的 CSS(级联样式表),当然它也可以在 XML 中使用。例如,可以使用 CSS 来表示何时显示发票,应支付的总额应该用 16 点 Helvetica 粗体字显示。但是,CSS 不能执行计算、重新整理或排序数据、组合多个源码中的数据或根据用户或会话的特征个性化显示的内容。由于这些原因,W3C 已着手开发更强大的样式表语言 XSL(可扩展样式表语言),并采纳了 SGML 社区中开发的 DSSSL(文档样式、语义和规范语言)中许多好的构思。 在 XSL 的开发过程中(这在 DSSSL 中已有所预示),发现在准备 XML 文档以备显示的过程中执行的任务可以分成两个阶段:转换和格式化。转换是将一个 XML 文档(或其内存中的表示法)转换成另一个 XML 文档的过程。格式是将已转换的树状结构转换成两维图形表示法或可能是一维音频流的过程。XSLT 是为控制第一阶段“转换”而开发的语言。第二阶段“格式化”的开发工作还是进行中。但实际上,大多数人现在使用 XSL 将 XML 文档转换成 HTML,并使用 HTML 浏览器作为格式化引擎。这是可行的,因为 HTML 实际上只是 XML 词汇表的一个示例,而 XSLT 可以使用任何 XML 词汇表作为其目标。 将转换成一种语言和格式化成另一种语言这两个操作分离经证实的确是一种好的决策,因为转换语言的许多应用程序经证明无法向用户显示文档。随着 XML 日益广泛地用作电子商务中的数据互换语法,对于应用程序将数据从一个 XML 词汇表转换成另一个 XML 词汇表的需求也在不断增加。例如,某个应用程序可能从电视收视指南中抽取电视节目的细节,并将它们插入按次付费客户的月帐单中。同样,还有许多实用的数据转换,在这些转换中源词汇表和目标词汇表是相同的。它们包括数据过滤,以及商务操作,如施行涨价。因此,随着在系统中开始越来越多地以 XML 语法的形式使用数据,XSLT 就逐渐成为由于处理这些数据的随处可见的高级语言。 有这样一个比喻:XSLT 与 XML 的关系,就好象 SQL 与表格化数据的关系一样。关系模型的强大功能并非来自用表存储数据的思想,而是源于 SQL 中可行的基于关系运算的高级数据操作。同样,XML 的层次化数据模型对应用程序开发者的帮助实际上也非常小。正是因为 XSLT 作为 XML 数据的高级操作语言提供了如此强大的功能。 2.XSLT 的优点 XSLT 给了您传统高级声明编程语言的所有好处,特别是对于转换 XML 文档的任务。 高级语言带来的实际好处是开发生产力。但实际上,真正的价值源自于更改的潜力。与使用低级 DOM 和 SAX 接口编码的过程性应用程序相比,用于转换 XML 数据结构的 XSLT 应用程序更能适应对 XML 文档细节的更改。在数据库世界中,这种特性叫做数据独立性,正是由于数据独立性导致了诸如 SQL 之类声明性语言的成功,并使旧的引导性数据访问语言走向衰亡。我坚信在 XML 世界中也会这样。 当然与所有声明性语言一样,XSLT 也会降低性能。但是对于大多数应用程序,今天的 XSLT 处理器的性能已经完全能够满足应用程序的需要,并且它会变得越来越好。在我的第二篇文章中,我将讨论 XSLT 处理器中使用的一些优化技巧,如我自己的 Saxon 产品。 |
|
|
|
|
相关下载资源: Java 语法介绍(一):Java语言的基本组成 Java语言主要由以下五种元素组成:标识符、关键字、文字、运算符和分隔符。这五种元素有着不同的语法含 ... J2EE全面介绍(一)一、J2EE的概念 目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平 ... J2EE全面介绍(二)<接J2EE全面介绍(一)>四. J2EE 的结构 这种基于组件,具有平台无关性的J2EE 结构使得J2EE 程序的编写十分简单,因 ... >+ 实例演练ASP+XML编程(一)本文是一篇实例讲解的文章。作为一个普通的程序员,我深知,一个优秀的例程,对于正在学习编程的人是多么的有帮助 ... C#对XML操作:写入一笔XML记录(1)C#操作XML初步(4)第二章:往现有XML文件添加记录我们可以根据XML结构挨个节点、属性的添加。在测试当中,我们假设 ... |
|