<?xml version="1.0" encoding="UTF-8"?> <!-- XML的文档声明, 必须放在第01行 --> <goodslist> <!-- 标签是大小写敏感的, 与HTML不同 --> <good id="1001" production_date="2018-4-1"> <!-- 每个标签都可以拥有属性, id是属性名, "1001"是属性值,必须使用双引号引用。它们都是自定义的 --> <price>12</price> <name>香蕉</name> <place>广州</place> </good> <good id="1002"> <price>39</price> <name>苹果</name> <place>北京</place> </good> <good id="1003"> <price>33</price> <name><芒果</name> <!-- 为了避免造成混淆, 特殊标记需要使用特殊符号来表示, <; 表示小于号 --> <place>上海</place> </good>
<xxx/> <!-- 这是一个单标记 --> </goodslist>
1.五个在XML文档中预定义好的实体:
< < 小于号
> > 大于号
& & 和
' ' 单引号
" " 双引号
2.约束文档(给文档添加约束), 一般约束都是开发好了的, 遵守即可。
例如,DTD文档
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!-- 如果根元素是note,子元素必须依次是to,from,heading,body. 不可以添加属性 --> <!ELEMENT to (#PCDATA)> <!-- #PCDATA means 放置文本内容 --> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <!-- 约束规则 -->
<note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> <!-- XML -->
3. DTD文档约束的引入方式
<1> 内部引入: 直接在XML文件里书写
<2> 外部引入
<a> 把DTD文档放在本地
<b> 把DTD 文档放在网络上
<a-1>
在本地创建一个DTD file
<a-2>
放置DTD代码
<a-3>
创建一个遵守DTD 的XML文档 (note2.xml)
需要添加如第二行所示的声明, "note.dtd"表示需要遵守的DTD文档的路径.
最终效果 (引入成功):
<b-1> 网络引入是更常见的方式
4. Schema 约束
下面这个例子是一个名为 "note.xsd" 的 XML Schema 文件:
<4-1> 创建一个Schema 文件
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" <!-- ns means name space, 命名空间一般都使用网址--> elementFormDefault="qualified"> <xs:element name="note"> <!-- 定义了一个note标记, 并定义了一些约束规则 --> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
<4-2> 如果有多种约束同时存在, 需要声明所写的代码遵循了哪种约束, 则需要表明命名空间, 类似于Java中的:
同理, 如果需要在XML里使用Schema约束文档:
<4-3> 创建一个新的XML文档, note3.xml
对 XML Schema 的引用
此文件包含对 XML Schema 的引用:
<?xml version="1.0"?> <note xmlns="http://www.w3school.com.cn" <!-- 表示引入的Schema属于哪个命名空间 --> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> <!-- 表示约束文档的位置, 可以解释为命名空间"w3"对应着"note.xsd" -->
<!-- 把xmlns, xmlns:xsi, xsi:schemaLocation 这三个属性赋给根标签 note -->
<!-- 遵守note.xsd 中的约束规则 -->
<to> </to>
<from> </from>
<heading> </heading>
<body> </body>
</note>
整体效果:
<4-4> 如果需要引入多个xsd (例如, 引入sikiedu发布的, 非本地的 xx.xsd)
<4-5> 添加命名空间
<1> 给命名空间起一个别名
xmlns = "http://www.w3school.com.cn" <!-- 默认的命名空间-->
xmlns:w3 = "http://www.w3school.com.cn" <!-- 起别名为w3-->
xmlns:se = "http://www.sikiedu.com" <!-- 起别名为se-->
<2>使用
如果不声明命名空间, 则使用默认的命名空间
id="1001"