+ 有DTD 或Schema 规则
+ 遵循DTD 或Schema 的规则= 有效的xml 文件(valid xml file)
属性文件:
url = jdbc:oracle:
[email protected]:1521:tarena
dbUser = openlab
dbPwd = open123
xml 表示:
<datasource id="db_oracle">
<property name="url">jdbc:oracle.....</property>
<property name="dbUser">openlab</property>
<property name="dbPwd">open123</property>
<property name="show_sql">true</property>
</datasource>
二、DTD / Schema
1.DTD: Document Type Difinition,文档类型定义
用来定义XML 文件的格式。
约束XML 文件中的标记规则。
DTD 的类型:PUBLIC(行业共用的) / SYSTEM(小范围自定义的)
DTD 中的定义规则:
元素:
出现一次而且有顺序的元素:书名, 作者, 价格, 册数, 简介
*: 出现0 到多次的元素
+: 出现1 到多次的元素
|:或,(phone | mobile), 只能出现一个
(phone | mobile)*, phone 和mobile 没有顺序,任意多次
?: 有或没有,0-1 次
属性:Attribute,定义在开始标记中的键值对。
<!ATTLIST 标记名称属性名称属性类型>
isbn CDATA #REQUIRED :isbn 的属性时必须的
isbn CDATA #IMPLIED: isbn 的属性不是必须的
isbn CDATA "true" : 默认值,
如果标记定义了,取标记定义的值,
如果没定义,取值true
把xml 文件和DTD 分离:
1)新建book.dtd,把DTD 部分保存在此文件中.
2)xml 文件改为:指定DTD 文件为book.dtd
<!DOCTYPE 书籍列表SYSTEM "book.dtd">
遵循所有xml 语法规则的文件= 格式良好的xml 文件
格式良好的xml 文件+ 有DTD 的定义+ 遵循DTD 的规则
= 合法/有效的xml 文件(valid)
2.Schema
命名空间:NameSpace
xml: <html:table>
<line><column>这是一个表格</column></line>
</html:table>
<product:table>
<typetype>coffee table</type>
<meterial>wood</meterial>
</product:table>
DTD <!ELEMENT table ()> 出现歧义,DTD 无法解决命名冲突。
Schema 是DTD 的替代者,功能都是描述XML 的结构。
Schema 支持命名空间,实现语法是XML。
xml 被称作是自描述的语言。
XML Schema Difinition: 简称XSD,遵循W3C 标准。
XML 文件:
<?xml version="1.0" encoding="gb2312"?>
<note>
<to>张无忌</to>
<from>赵敏</from>
<subject>Hello</subject>
<body>别忘了开会!</body>
</note>
用DTD 约束xml 的格式note.dtd:
<!ELEMENT note (to, from, subject, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT subject (#PCDATA)>
<!ELEMENT body (#PCDATA)>
用Schema 约束xml 文件的格式note.xsd:
复杂元素(有子元素的元素) / 简单元素(叶子元素)
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.tarena.com.cn"
xmlns="http://www.tarena.com.cn"
elementFormatDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string" />
<xs:element name="from" type="xs:string" />
<xs:element name="subject" type="xs:string" />
<xs:element name="body" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
给xml 文件指定schema。