JAXP全部内容,第2部分:使用Sun的XML处理工具包来转换XML

在 JAXP 的早期版本中,该首字母缩写代表 Java API for XML Parsing。在 第 1 部分 中了解到,JAXP 是位于 SAX 和 DOM 之上的层,它允许 Java 程序 员执行开发商中立的 XML 解析。最初,这是 JAXP 的全部特性。不过俗话说的 好,过去是过去,现在是现在。

过去,Java 和 XML 组合本身主要用于解析。Java 应用程序只需读入 XML 文档,然后按程序处理文档的数据。但随着 XML 消费应用程序流行起来,很显 然,各种应用程序所执行的操作有许多重叠。对于所有优秀的软件,重叠将导致 规范(而且每次都产生新的有用的 API)。

XML 的广泛使用所产生的第一个规范是 XSL。应用程序不断提取 XML 数据, 添加一些格式化,然后将其显示在用户界面上——通常是作为 HTML、XHTML 或 WML。XSL 完成此任务,并在其上构建规范,从而允许应用程序抛弃其所有的专 用转换代码。XSL 规范产生之后,XML 转换 API(Transformation API for XML ,TrAX)随之出现。 TrAX 提供了在 Java 应用程序中使用 XSL 的简单一致的 方法。目前,JAXP——相当长的链(和介绍)中的最后一链——已经将 TrAX 合 并到核心 Java 开发环境中。按照所有的发展,以及最近的添加(比如扩展验证 和 XPath 支持),JAXP 现在代表 Java API for XML Processing。本文重点介 绍使用 JAXP 进行处理而非解析。

由此及彼

理解 XSL 的基本程序流对于掌握 JAXP 如何处理转换是非常关键的。如果对 XSL 十分陌生,则需要快速回顾一下 XSL 基本概念。即使您是 XSL 专家也要忍 受我如此絮叨。

来源 (XML)

使用 XSL 时,必须从 XML 开始。我知道这听起来理所当然,但还是值得说 明一下。您可能习惯以 XML 文件开始(比如 phonebook.xml),并将其传递到 XSL 处理器中。JAXP 不仅允许您传递文件,它还允许您做好多事,在下一节 输 入和输出 中将学习相关内容。

样式表 (XSL)

可能吸引大多数设计人员的是 XSL 样式表。样式表是一个指令集合,它指定 特定类型的数据作为输入,并指定其他一组数据和格式化作为输出。但是切记, 样式表应该对入站 XML 的结构进行操作,而不是对文档中的特定数据进行操作 。这就确保样式表处理任何给定格式的 XML,而非特定的实例文档。

目标 (*ML)

最后需要记住,只能从 XSL 中输出格式良好的标记语言。不能输出 Microsoft Word 文档或 PDF。一定要使用标记语言,比如 XML、XHTML、WML 或 其他良好的 *ML(标记语言)变种。

当然,对此我听到异议——已经看到了从 XML 输出 PDF 的应用程序,或将 XML 转换为 Excel 的应用程序。而且,可以接受特定格式的 XML 并将其转换为 二进制格式的引擎确实存在。 但这并不属于 XSL 的领域;它是转换后处理。 JAXP 会帮助转换 XML,但它不允许转换为二进制格式。

输入和输出

通过简单的回顾可能已经了解到,许多 XML 转换只是关于输入和输出的。导 入 XML,对它进行操作,然后输出 *ML。在处理所有中间位(我意识到这是最有 趣的地方)之前,将展示如何将数据输入到 JAXP 和如何将其输出返回。

时间: 2024-08-22 14:34:19

JAXP全部内容,第2部分:使用Sun的XML处理工具包来转换XML的相关文章

asp net sql-使用ASP.net下载附件,附件内容为system.byte[],请问错在哪里?如何转换?

问题描述 使用ASP.net下载附件,附件内容为system.byte[],请问错在哪里?如何转换? 数据中附件类型为Image,数据库中查看显示<二进制数据>,但是用C#的datetale读取时,查看显示为system.byte[]. string sql = ""SELECT * from Attachment_tb where ID='"" + attachmentID + ""'""; DataTable

Java与XML

xml JAXP API--嵌入不同的解释器 SAX解释器+DOM解释器+XSL转换器 javax.xml.parsers中加载XML文档的类: DocumentBuilder DocumentBuildrFactory SAXParser SAXParserFactory ===================================== SAX API SAX的XML解释器:Apache的Xerces或Crimson 处理XML文档的接口: ContentHandler Entity

Java与XML(一)基础

xml JAXP API--嵌入不同的解释器 SAX解释器+DOM解释器+XSL转换器 javax.xml.parsers中加载XML文档的类:DocumentBuilderDocumentBuildrFactorySAXParserSAXParserFactory=====================================SAX API SAX的XML解释器:Apache的Xerces或Crimson 处理XML文档的接口:ContentHandlerEntityResolver

Java与XML(一)入门基础介绍

JAXP API--嵌入不同的解释器 SAX解释器+DOM解释器+XSL转换器 javax.xml.parsers中加载XML文档的类: DocumentBuilder DocumentBuildrFactory SAXParser SAXParserFactory ===================================== SAX API SAX的XML解释器:Apache的Xerces或Crimson 处理XML文档的接口: ContentHandler EntityReso

IOS 整体架构 和 MVC布局

IOS的生态系统 IOS生态系统不仅仅是指产品,更重要的是指 iPhone/iPad/iPod/Mac +iCloud+App整个系统,包括Siri (部分设备不支持).FaceTime.Safari.Game Center. 地图.Passbook.电话.邮件.苹果所有移动设备都使用自己的OS,且不能更换电池,不能插内存卡,数据线连电脑后只能通过自家软件iTunes进行文件的传输,只能使用经过苹果认可的软件,且软件也只能从App Store下载,这就组成了 一个封闭的生态圈. 看一组数据: 2

JAXP跟DOM4J是什么关系?

dom JAXP是sun提出的一个规范,用于定义如何解析和转换xml文档的接口,目前版本已经达到1.3,根据解析转换供应商无关性,解析器和转换器可以在具体运行时进行多样更换.这本身对于应用开发来说是一个福音.但是目前jaxp在国内的使用并不是想象中那样的广泛,这也是由于一定的市场原因存在(对于不同版本的jvm的支持的需求). 现在更多的应用采用dom4j和jdom,其操作接口更为简便. 个人以为,dom4j(不太了解jdom)并不是严格意义上的xml解析器,其底层也是采用符合jaxp规范的具体实

SAX,DOM,JAXP,JDOM,DOM4J 比较分析

          首先说一下各种方式的详解:         1.DOM(JAXP Crimson解析器)         DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找 特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM 以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以

spring-前言不允许有内容,是什么错误呢?

问题描述 前言不允许有内容,是什么错误呢? org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 1 in XML document from file [D:jfinalFORwebProjectsshtargetclassesspringjdbc.properties] is invalid; nested exception is org.xml.sax.SAXParseException;

Solr DIH导入出现 Data Config problem: 前言中不允许有内容 异常

Solr配置DIH导入时出现 "Data Config problem: 前言中不允许有内容." 异常. <response> <lst name="responseHeader"> <int name="status">500</int> <int name="QTime">120</int> </lst> <lst name=&quo