__________________________________________________________________
关于XML

XML可扩展标记语言(Extensible Markup Language)实质就是表示数据的方式.既然如此,与之相关的肯定有数据约束和验证和解析以获取数据(XML转换).

____________________________________________________________________________
数据约束
目标:确定究竟什么类型的内容和子元素可以出现在元素中的一些规则(以及以什么顺序和基数性等)
实例:org.springframework.beans.factory.xml包下的spring-beans-2.0.dtd和spring-beans-2.0.xsd

1.XML DTD
缺陷:XML DTD(XML的文档类型定义)主要限制在于它们缺乏数据类型的表达和对每个元素出现次数约束方面.

DTD 基本语法:
A、B、C 和 D 是在下例中代表元素的变量。
元素必须有正好一个 A 、至少一个 B (由加号表示)、零个或多个 C (由星号表示)以及零个或一个 D (由问号表示):
<!ELEMENT element (A, B+, C*, D?)>

元素可能有 A 或 B 或 C 之一:
<!ELEMENT element (A | B | C)>

元素不包含任何内容:
<!ELEMENT element EMPTY>

元素可以包含在 DTD 中列出的任何元素:
<!ELEMENT element ANY>

元素可能包含经过语法分析的字符数据或另一个元素( element2 )。星号(*)表示混合内容模型 — 其中元素可以包含不同类型的属性。
<!ELEMENT element (#PCDATA|element2)*>

下例将文本 "entity reference" 插到文档中它出现的任何地方:
<!ENTITY element "entity reference">

可以看到在 XML 文档中该实体引用元素如下:
&element;

2.XML Schema

    W3C XML Schema真正出色的地方是在表达属性值和元素内容的类型约束上。而这恰恰是 DTD最薄弱的地方。除了提供非常丰富的一组内置 simpleType 以外,XML 模式还允许您使用类似规则表达式的语法派生出新的 simpleType 。内置类型包括您在使用编程语言时遇到的: string 、 int 、 float 、 unsignedLong 、 byte 等等;但它们还包括大多数编程语言生来不具备的一些类型: timeInstant (即日期/时间)、 recurringDate (年中的天)

    XML 模式还在 DTD声明子元素模式的基数性能力的基础上进行了改进,在XML 模式中使用属性minOccurs,maxOccurs来设置,而在 DTD中,符号: ? 、 * 和 + 分别指定“零或一”、“零或多个”、“一个或多个”.

    W3C XML Schema都允许在属性中使用枚举类型,一个专门的 simpleType 可以包含一个枚举面

详细使用手册请参考:
http://www-128.ibm.com/developerworks/cn/xml/x-sd/index.html

____________________________________________________________________________
XML使用

1.根据开发XML 应用程序时常用到的集中模型创建的 API 来分析和操纵 XML 结构,
    这些模型可以是基于对象的,如文档对象模型(Document Object Model,DOM)和 JDOM.在这种模型里文档的每个成分被描述成特定类型的节点。这些节点按照父子关系组织.

    也可以是基于事件的,如 Simple API for XML(SAX),SAX 是一种基于事件的模型,把文档转化成一系列回调,如 startElement()

2.另一种常见的处理方式是通过使用可扩展样式表语言转换,开发人员可以使用 XSLT 定义对 XML 文档的操作,以生成特定的结果。XSL 格式化对象(XSL Formatting Objects,XSL-FO)是一种强大而灵活的格式化数据的 XML 词汇表,常与 XSLT 结合使用,把 XML 和 HTML 转化成 PDF(可移植文档格式)。

____________________________________________________________________________
参考资料:
解码 XML 和 DTD
XML Schema 与 XML DTD的技术比较与分析
W3C XML Schema 与文档类型定义 (DTD)