📄 8_xml学习笔记.txt
字号:
2004-10-28 星期四 晴
XML预览
1. XML的背景
答:1) XML代表扩展的标记语言(eXtensible Markup Language);
2) XML由W3C联盟发展维护;
3) XML是一种元语言,可以用来定义其它语言;
4) XML没有定义任何标记,它提供了一种工具定义标记以及它们之间的结构关系;
5) XML是一种用于结构化文本交换的标记语言;
6) XML代表了内容的结构也代表了内容本身;
7) XML继承自SGML(标准标记语言)。SGML的前身GML由IBM在1960年发明,用于描述设备无关的文本。
8) XML是SGML的子类, 起初的目的是为Web的结构文档提供服务。
9) W3C组织在1998年2月10日发布XML1.0版,第二个版本发布于2000年10月9日。
2. XML和HTML的关系
答:1) 事实上,HTML和XML不能够进行比较的。因为XML是一种元语言,而HTML是一种定义好的语言。
2) HTML有一套确定的标记。在W3C标准规范中定义了HTML标记的含义并由部分浏览器实现了。
3) HTML标记非常适合描述人类易读的可视化文本。
4) HTML定义了许多表现指令用以优化在浏览器中的显示。
5) 在HTML标记中,数据固有的结构丢失了。
6) HTML没有维持数据类型信息的完整性、约束、或实体间的其它关系,而XML提供了这些特征。
3. SGML、XML和HTML
答:
SGML<----HTML
↑
|
XML
4. XML文件
答:<?xml version="1.0" ?><--------------------------------Processing Instruction
<welcome><---------------------------------------------Root Element
<message><-------------------------------------------Child element
Welcome to the world of EnterInfo!
</message>
<book-info>
<book-title> ↓-------------------------------Entity reference
Web services & IBM WSAD<-------------------Character data
</book-title> ↓-------------------------------Attribute
<data type="lastEditon">
<day><----------------------------------------Begin tag
23
</day><---------------------------------------End tag
<month>
08
</month>
<year>
2001
</year>
</data>
<data type="lastEdition">
<day>
23
</day>
<month>
08
</month>
<year>
2001
</year>
</data>
<email>TonyDeng@enterinfo.net</email>
<filename src = "sg246292.pdf" /><---------------Empty tag
</book-info>
</welcome>
5. XML标记
答:1) XML文档是基于文本的,由标记和内容组成:
. 标记让XML的处理器知道如何去处理内容,以及它们是如何组织的;
. 内容是字符数据,你可以在打印或显示的页面看见它们。
2) XML文档中有六种标记:
a. Elements: 最常见的标记形式,它确定它们所包围的内容。以Start tag开始,以end tag结束。非空元素包含了子元素或字符数据。空元素没有内容,能写成以下二种形式:
<empty-element></empty-element> or
<empty-element/>
b. Attributes: 是出现在元素的first tag中位于元素名称后的名称-值对。所有的属性值必须用单引号或双引号括起来。属性指定了元素的特征。
c. Entity references: 实体引用可用于插入保留字符或任意的unicode,也用于重复或变化的文本,或包含外部文件的内容。实体引用以与号(&)开始,以分号(;)结束。XML规范预定义了五种保留的实体引用:
< 代表 <
> 代表 >
" 代表 "
' 代表 '
d. Comments: 不是XML文档原文内容的一部分,它以“<!--”开始,以“-->”结束。XML处理器不需要将注释传给应用程序。
e. Processing instructions(PIs): PIs不是XML文档的原文内容,但XML的处理器需将它传递给应用程序。
f. CDATA:指示解析器忽略大多数标记字符,该部分封装了一些源代码。
6. 结构良好的的XML文档
答:虽然XML没有任何预定义标签,但成为结构良好的文档,还是存在一些必须尊守的规则。从定义上讲,假如一个文档结构不好,它也就不是XML文档。
1) 标签必须成对。
2) 一份文档必须包含一个根元素。
3) 所有的开始标签和结束标签必须匹配。
4) 空标签必须以“/>”结束。
5) 标签必须嵌套正确。
6) 元素名称大小写敏感。
7) 所有的属性值必须位于单引号或双引号中。
8) 在同一个开始标签或空标签澡属性不允许出现超过一次。
HTML中也存在类似的规则,但HTML浏览器可接受结构不好的HTML文档。
7. 文档类型定义(DTD)(Document type definition)
答:1) 结构良好的文档为XML提供了许多优势,例如可扩展性、将结构加于一组数据。
2) 无论如何,通过XML文档交换信息需要更多功能:
. 它必须可能对一套文档构建通用语法并能自动检验其正确性。
. 需要文档类型定义(DTD)的地址。
3) 一个DTD定义了:
. 允许的子元素以及它们排列的先后顺序;
. 元素和以及属性的多样性;
. 属性值和它们的类型以及默认值;
. 实体和符号
4) DTD表达了一个文档内容的元信息;
5) 通过DTD,XML解析器能校验一份XML文档是否符合定义;
6) 一个DTD可用于一至多个XML文档;
7) 文档内容能在外部或内部声明:
<!DOCTYPE rootElement SYSTEM "filename.dtd">
<!DOCTYPE rootElement [...(delcarations)...]>
8) 一个DTD标识了文档的根元素以及包含了额外的声明。它必须是文档中PI和注释后的首要内容。
9) 外部和内部的DTD元素混合在一起是可以的。
因为DTD已被XML schemas所替代,我们可不必详细讨论。
8. 确认
答:1) 一份结构良好的文档只有当它包含一个合适的文档类型声明并且符合这份声明的约束时才是有效的。
2) 所有有效的文档都是结构良好的,但结构良好的文档并不一定是有效的。
9. XML的名域空间
答:1) 应用程序通过元素名称(标签)和文档的内容建立联系。应用程序有可能使用相同标签处理二份文档。在二份文档的这个标签中有不同的意思。因此,引入名域空间的概念以排除命名的冲突。
2) XML的名域空间由W3C组织于1999年1月14日定义并推荐。
3) 以后我们会看到,这个定义了Web服务导向的体系结构标准利用了强大的概念。
4) 标签名称应该是全球唯一的,但是因为性能原因他们必须短小。
5) 为了解决这个冲突,W3C组织名域空间介绍定义了一个属性:xmlns,通过它改进XML元素。假如它出现在一个元素中,它确定了这个元素的名域空间。
6) xmlns属性有下列的语法:
xmlns=localQualifier:"globallyUniqueName"
7) 全局唯一的名称使用URI语法,但它并非一个真实的可使用浏览器通过HTTP协议访问的URI。
8) 在下列用户元素定义中,一个accounting名域空间被定义用以区分用户记录。这些记录被其它商业应用程序所创建。
<acct:customer xmlns:acct="http://www.enterinfo.net/acct-REV10">
<acct:name>Corporation</acct:name>
<acct:order acct:ref="5566"/>
<acct:status>invoice</acct:status>
</acct:customer>
. 名域空间定义在第一行,分配了一个全局名称http://www.enterinfo.net/acct-REV10给本地的限地词:acct。
. 这个限定词用于元素名称,绑定它们到名域空间。
第二个应用程序,例如一个fulfillment系统,可以分派一个不同的名域空间给它的customer元素:
<ful:customer xmlns:ful="http://www.enterinfo.net/ful">
<ful:name>Corporation</ful:name>
<ful:order ful:ref="A98756"/>
<ful:status>shipped</ful:status>
</ful:customer>
现在一个应用程序通过名称可处理相同数据结构中不同的数据。
9) 假设元素没有定义名域空间,系统会加上默认的名域空间。黙认的名域空间的元素无须前缀,注意黙认的名域空间适合于所有有属性定义。
10. XML schema
答:1) 作为XML文档元素信息符号,我们只介绍了DTD。
2) DTD有缺点,例如,它们使用不同于XML文档的语法。
3) 它们同样缺少数据键入能力。
4) XML schema definition(XSD) 带给XML丰富的数据描述。一个schema可准确地定义约束并迫使数据类型尊守。
5) XSD由W3C组织于2001年5月2日发布。
6) XSD本身是XML文档:它们可被XML工具或通过任何XML处理器管理。换句话说,对于XML schema还存在一个XML schema。
7) 值得注意的是XSD可被引入XML文件。在处理的时候,导入的schema必须可被访问(例如使用HTTP)。
2004-10-29 星期五 晴
XML预览之二
11. 一个schema定义中的元素
答:1) 声明:声明使元素和属性以特定的名称和类型出现在文档中,声明包括定义。
2) 定义:定义创建新的类型(简单或复杂)。
. 简单类型:不能有元素内容以及属性;
. 复杂类型:在内容中有元素,可以有属性;
12. 第一个Schema范例
答:我们使用simpleType元素定义和命名一个简单类型:
<?xml version="1.0" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ibm.com"
xmlns:TestSchema="http://www.ibm.com">
<simpleType name="ZipCodeType">
<restriction base="integer">
<minInclusive value="10000"/>
<maxInclusive value="99999"/>
</restriction>
</simpleType>
<!--element definitions skipped -->
</schema>
. restriction元素表明其所基于的基本类型并指定了二个方面:minInclusive和maxInclusive。这些范围限制了新类型的范围区间。
. 注意我们为schema定义了默认的名域空间作为标准的XML名域空间http://www.w3.org/2001/XMLSchema。我们也定义了自己特定的名域空间:http://www.ibm.com。
13. 第二个Schema范例的部分
答:<element name="address">
<complexType>
<sequence minOccurs="1" maxOccurs="1">
<element ref="TestSchema:street"/>
<element ref="TestSchema:zipCode"/>
<element ref="TestSchema:city"/>
</sequence>
</complexType>
<element>
<element name="street" type="string"/>
<element name="zipCode" type="TestSchema:ZipCodeType"/>
<element name="city" type="string"/>
<element name="addressList">
<complexType>
<sequence minOccurs="0" maxOccurs="unbounded">
<element ref="TestSchema:address"/>
</sequence>
</complexType>
</element>
. sequence是XSD的保留关键字,定义了一个复杂类型的内置结构;
. type属性是可选的,它包含了一个类型定义的引用——可定义于XSD文件中(如:TestSchema:ZipCodeType)或预先确定的标准数据类型(如String)。
14. 在XML中使用XSD
答:确信上面定义的XSD文件保存在:c:\temp\TestSchema.xsd中,下面是一个采用该XSD文件进行验证的XML文件:
<?xml version="1.0" ?>
<x:addressList xmlns:x="http://www.ibm.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ibm.com file:///c:/temp/TestSchema.xsd">
<x:address>
<x:street>x:Vangerowstrasse</x:street>
<x:zipCode>69115</x:zipCode>
<x:city>x:Heidelberg</x:city>
</x:address>
<x:address>
<x:street>x:Bennal Road</x:street>
<x:zipCode>90375</x:zipCode>
<x:city>x:San Jose</x:city>
</x:address>
</x:addressList>
. 注意这个XSD文件必须能通过HTTP访问,在这个例子中,file:///C:/temp/TestSchema.xsd是位置的真实URL;
. 像http://www.ibm.com的命域空间只是使用这个符号用来进行全球唯一确定。假定noProtocol://www.ibm.com是全球唯一的,它也是一个有效的名域空间。
. XML标准中schema位置属性的语法是:
xsi:schemaLocation="targetnamespaceURI locationURI"
15. 目标名域空间
答:1) 目标名域空间,用以识别元素对应的既存的名字。
2) 在声明的情况下,这种联系确定了符合schema的XML文件中元素的名域空间。
3) 一个引入了schema的XML文件必须在schemaLocation属性中引用它的目标名域空间。
4) 任何目标和元素真实名域空间间的错配都会作为schema的确认错误进行报告。
5) 在我们的例子中,目标名域空间是:http://www.ibm.com。它定义在XSD文件中并在XML文件中被引用了二次。
16. 处理XML
答:XML是一种存储和描述数据的方式。我们可能想程序去处理这些数据,这儿有二种方式:
1) 一个XML的解析器可以产生XML数据的代表(像DOM的对象),这些代表可以通过语言(像Java)的API进行访问。
2) 一个XML/XSL处理器能应用XSL style sheet将XML文档转化成任意文本格式(其它XML文件、WML、HTML)。
17. XML解析器之DOM
答:1) DOM: 英文全称为document object model;
2) 基于对象模型的DOM:解析以后,内存中装载着DOM对象树。这个对象树提供了XML文档结构和内容的所有信息;
3) DOM提供了很多关于DOM树的操作命令;
4) 对应于一个大XML文档的DOM占用了非常大的内存空间。它创建了许多小的生命周期不长的对象,这给JVM内存管理系统带来了很大的压力。
5) DOM最适合于在内存中导航并处理XML文档的结构和内容。
18. XML解析器之SAX
答:1) SAX是英文simple API for XML的缩写,它是事件驱动的;
2) 通过Java代码中与SAX事件流的对应,你可以编写基于XML的数据驱动的程序;
3) SAX允许XML数据只在一次传送中对应到指定的对象模型;
4) SAX编程模式被认为很麻烦因为它们不能在数据间导航;
5) SAX非常适合直接的,映射到指定问题域只传送一次的对象模型;
19. XML解析器之JDOM
答:1) JDOM通过一树状结构提供Java访问XML文档的能力,就像DOM一样。
2) 与DOM不同的是,JDOM专为Java设计,比DOM提供更为直接和容易地使用API的能力。
3) JDOM是由Brett McLaughlin和Jason Hunter发动的一个开源项目。
20. 解析器实现
答:存在很多解析器实现。例如,Xerces是Apache的一个开源项目,它基于早期IBM的一个称为XML4J的解析器。
21. XML/XSL处理器
答:1) XSL(eXtensible style sheet language)允许真正的内容和表现形式的分隔;
2) XSL它本身也是XML格式,它由三部分组成:
. XPath: XML路径语言,在XML文档之内定位信息的标准方式,用于在XML文档中访问文本数据、元素、属性以及其他信息。
. XSL-T: 是XSL的副产品,其以一种标准方式将格式化应用到XML文档。一方面,它可以将文档变换成XSL-FO重现,另一方面,它可以将其变换成其他XML抽象,也可以变换成其他重现表示。
. XSL-FO: XSL格式化对象
3) 这儿有一个Apache组织对XSL的开源实现叫做Xalan,它基于Lotus的早期XSL实现。
22. 总结
答:1) XML代表信息而非格式,它使数据便携。
2) XML处理和传输提供以数据应用不同语义和形式表现的能力。
3) XML发展得很快,XML的使用一直在高速地增长。例如,XML是Web服务的一项基础性技术。
DTD和Schema
1. XML和B2B
答:1) 通过XML,金融信息可通过互联网进行交换;
2) XML正成为金融信息通过互联网交换的主要语言。许多B2B应用程序正在开发中。
2. XML,创建新语言
答:1) XML是WAP和WML之母;
2) WML(Wireless Markup language), 用于标记手持设备(像手机)上互联网应用程序,用XML写成。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -