《语义网基础教程》学习笔记(一)

前端之家收集整理的这篇文章主要介绍了《语义网基础教程》学习笔记(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一、XML概述
1、有效(valid)的XML文档:遵守了XML文档的基本规则,并使用DTD或Schema定义了语义约束,而且也完全遵守了DTD或Schema所定义的语义约束的XML文档
2、XML声明部分的encoding属性值应该与保存该文档所使用的字符集相同。如果需要让XML支持中文,应该注意以下几点:
①保存文件时使用支持中文的字符集
②XML声明部分的encoding属性应该与保存该文件时所使用的字符集相同
3、XML元素里的多个属性之间是无序的,因此同一个元素不可包含多个同名的属性,XML元素的属性必须有属性值;
XML的子元素则是有序的,因此同一个元素可以包含多个同名的子元素;子元素顺序不同,则XML文档所表达的意义也就不同了。
这正如Java集合里的Set和List,Set代表无序元素,集合不可重复。List代表元素有序,集合元素可以重复的集合。
4、空元素:
如<book></book>等价与<book />但与<book> </book>不同,注意空元素与元素内容为空的区别
空元素可以接受多个属性如:<book name="Hadoop权威指南" price="12.8"></book>
5、W3C观点:元数据才应该存储为属性,而数据本身则应该存储为元素。应该尽量使用元素来描述数据,而仅仅使用属性来提供与数据无关的信息。
在实际开发中如果使用XML交换数据,优先考虑使用子元素来存储数据。用子元素的缺点是XML文档会变得臃肿。
6、语义约束:
使用XML交换数据的双方相互约定一套规则,XML创建者按这套规则保存信息,而XML接受者按这套规则读取信息。这套规则应该以一种独立的形式存在,然后交给XML创建者和使用者共同遵守。XML将其称为语义约束。
7、内部DTD例子
注:<!ELEMENT 计算机书 (书名,作者,价格,介绍)>这一行定义的子元素有严格的顺序要求,XML文档中要遵守

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <!-- 内部DTD,指定了文档的根元素:书籍列表-->
  3. <!DOCTYPE 书籍列表[
  4. <!ELEMENT 书籍列表 (计算机书)*>
  5. <!ELEMENT 计算机书 (书名,介绍)>
  6. <!ELEMENT 书名 (#PCDATA)>
  7. <!ELEMENT 作者 (#PCDATA)>
  8. <!ELEMENT 价格 (#PCDATA)>
  9. <!ELEMENT 介绍 (#PCDATA)>
  10. ]>
  11.  
  12. <书籍列表>
  13. <计算机书>
  14. <书名>hadoop权威指南</书名>
  15. <作者>zpc</作者>
  16. <价格>22</价格>
  17. <介绍>该书介绍了Hadoop的技术</介绍>
  18. </计算机书>
  19. </书籍列表>
8、外部DTD
  1. <!DOCTYPE 根元素名
  2. SYSTEM "外部DTD的URI"
  3. >
  4. 如:
  5. <!DOCTYPE 书籍列表
  6. SYSTEM "http://www.haodianying.org/dtd/book.dtd"
  7. >
  8.  
  9. <!DOCTYPE 书籍列表
  10. SYSTEM "book.dtd"
  11. >
  12. 外部DTD例子:
  13. book.dtd文件
  14. <?xml version="1.0" encoding="UTF-8"?>
  15. <!ELEMENT 书籍列表 (计算机书)*>
  16. <!ELEMENT 计算机书 (书名,介绍)>
  17. <!ELEMENT 书名 (#PCDATA)>
  18. <!ELEMENT 作者 (#PCDATA)>
  19. <!ELEMENT 价格 (#PCDATA)>
  20. <!ELEMENT 介绍 (#PCDATA)>
  21.  
  22. outer.xml文件
  23. <?xml version="1.0" encoding="UTF-8"?>
  24. <!DOCTYPE 书籍列表 SYSTEM "C:\Documents and Settings\zhou\桌面\book.dtd">
  25. <书籍列表>
  26. <计算机书>
  27. <书名>hadoop权威指南</书名>
  28. <作者>zpc</作者>
  29. <价格>22</价格>
  30. <介绍>该书介绍了Hadoop的技术</介绍>
  31. </计算机书>
  32. </书籍列表>

9、共用DTD,一般由某个权威机构定制,通过PUBLIC关键字引入,使用共用DTD时还需给共用DTD指定一个标识名。
引用公用DTD的格式:
<!DOCTYPE 根元素
PUBLIC "DTD的标识名" "公用DTD的URI">
10、DTD必须定义XML文档中出现的所有元素。
11、每个<!ATTLIST...>定义一个属性
属性的约束规则:#required(必须的属性)、#IMPLIED(可有可无)、#FIXED(属性值是固定的)
12、实体是可以自定义
定义:<!ENTITY java "疯狂Java讲义">
引用:&java;
大多数时候定义实体都是为了减少字符输入

定义参数实体(只比定义普通实体多了个%)
<!ENTITY % 实体名 "实体值">
引用:%实体名;
注:参数实体一定要先定义后使用,而且参数实体只能在DTD中使用

定义外部实体
<!ENTITY 实体名 SYSTEM "实体所在文件的URI">
注:保存外部实体值的外部文件必须满足:该文件是一个文本文件、该文件是满足XML要求的结构化文档
13、Schema概述及其优势
XML Schema是DTD的替代者,它采用了标准的XML语法来定义XML文档语义约束,不仅可以定义XML文档的结构还可以定义XML文档的内容约束
<schema>元素是每一个XML Schema的根元素:
<?xml version="1.0"?>
<xs:schema>
...
...

</xs:schema>

<schema> 元素可包含属性。一个 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"
elementFormDefault="qualified">
...
...
</xs:schema>
解释:
xmlns:xs="http://www.w3.org/2001/XMLSchema"
显示 schema 中用到的元素和数据类型来自命名空间 "http://www.w3.org/2001/XMLSchema"。同时它还规定了来自命名空间"http://www.w3.org/2001/XMLSchema" 的元素和数据类型应该使用前缀 xs:
targetNamespace="http://www.w3school.com.cn"
显示被此 schema 定义的元素 (note,to,from,heading,body) 来自命名空间: "http://www.w3school.com.cn"。
xmlns="http://www.w3school.com.cn"
指出默认的命名空间是 "http://www.w3school.com.cn"。
elementFormDefault="qualified"
指出任何 XML 实例文档所使用的且在此 schema 中声明过的元素必须被命名空间限定。

14、一个学习xml的主页:http://bbs.xml.org.cn/dispbbs.asp?boardID=23&ID=7076
15、Schema的数据类型
(1)字符串相关类型
(2)数值类型
(3)日期类型
(4)boolean类型
(5)anyURI类型
(6)二进制数据

16、使用限制派生新类型
  1. 例子1
  2. order1.xsd文件
  3. <?xml version="1.0" encoding="UTF-8"?>
  4. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
  5. <xsd:element name="order">
  6. <xsd:complexType>
  7. <xsd:sequence>
  8. <xsd:element ref="orderItem" maxOccurs="10"/>
  9. </xsd:sequence>
  10. </xsd:complexType>
  11. </xsd:element>
  12. <xsd:element name="orderItem">
  13. <xsd:complexType>
  14. <xsd:sequence>
  15. <!--自定义的两个类型-->
  16. <xsd:element name="id" type="idType"/>
  17. <xsd:element name="quantity" type="quantityType"/>
  18. </xsd:sequence>
  19. </xsd:complexType>
  20. </xsd:element>
  21. <xsd:simpleType name="idType">
  22. <xsd:restriction base="xsd:string">
  23. <!--枚举类型-->
  24. <xsd:enumeration value="7-5058-3496-7"/>
  25. <xsd:enumeration value="7-5005-6450-3"/>
  26. <xsd:enumeration value="7-3020-6069-7"/>
  27. </xsd:restriction>
  28. </xsd:simpleType>
  29. <xsd:simpleType name="quantityType">
  30. <xsd:restriction base="xsd:integer">
  31. <xsd:minInclusive value="1"/>
  32. <xsd:maxInclusive value="10"/>
  33. </xsd:restriction>
  34. </xsd:simpleType>
  35. </xsd:schema>
  36.  
  37.  
  38. order1.xml文件
  39. <?xml version="1.0" encoding="UTF-8"?>
  40. <order xmlns:xi="http://www.w3.org/2001/XMLSchema-instance" xi:noNamespaceSchemaLocation="file:///C:/Documents%20and%20Settings/zhou/%e6%a1%8c%e9%9d%a2/order1.xsd">
  41. <orderItem>
  42. <id>7-5005-6450-3</id>
  43. <quantity>5</quantity>
  44. </orderItem>
  45. </order>
  46. 注意:在XML Schema的根元素下定义的任何元素都可以作为XML文档的根元素使用,因此上面的order1.xml也可以写成下面的格式
  47. <?xml version="1.0" encoding="UTF-8"?>
  48. <orderItem xmlns:xi="http://www.w3.org/2001/XMLSchema-instance" xi:noNamespaceSchemaLocation="file:///C:/Documents%20and%20Settings/zhou/%e6%a1%8c%e9%9d%a2/order1.xsd">
  49. <id>7-3020-6069-7</id>
  50. <quantity>2</quantity>
  51. </orderItem>
  52.  
  53.  
  54. 例子2
  55. age.xsd文件
  56. <?xml version="1.0" encoding="UTF-8"?>
  57. <zpc:schema xmlns:zpc="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" >
  58. <!-- 定义新类型-->
  59. <zpc:simpleType name="age_Type">
  60. <zpc:restriction base="zpc:int">
  61. <!--最大值100、最小值0-->
  62. <zpc:maxInclusive value="100"/>
  63. <zpc:minInclusive value="0"/>
  64. </zpc:restriction>
  65. </zpc:simpleType>
  66. <!--定义age元素,它的类型是age_Type-->
  67. <zpc:element name="age" type="age_Type"/>
  68. </zpc:schema>
  69.  
  70.  
  71. age.xml
  72. <?xml version="1.0" encoding="UTF-8"?>
  73. <age xmlns:niao="http://www.w3.org/2001/XMLSchema-instance" niao:noNamespaceSchemaLocation="file:///C:/Documents%20and%20Settings/zhou/%e6%a1%8c%e9%9d%a2/test2.xsd">
  74. <!--上述schema限制了age的取值范围-->
  75. 33
  76. </age>
  77.  
  78.  
  79. 例子3
  80. price.xsd
  81. <?xml version="1.0" encoding="UTF-8"?>
  82. <zpc:schema xmlns:zpc="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  83. <zpc:simpleType name="price_Type">
  84. <zpc:restriction base="zpc:decimal">
  85. <zpc:maxInclusive value="100"/>
  86. <zpc:minInclusive value="0"/>
  87. <!-- 最多5位数,小数点最后最多2位-->
  88. <zpc:fractionDigits value="2"/>
  89. <zpc:totalDigits value="5"/>
  90. </zpc:restriction>
  91. </zpc:simpleType>
  92. <zpc:element name="price" type="price_Type"/>
  93. </zpc:schema>
  94.  
  95.  
  96. price.xml
  97. <?xml version="1.0" encoding="UTF-8"?>
  98. <price xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///C:/Documents%20and%20Settings/zhou/%e6%a1%8c%e9%9d%a2/test3.xsd">
  99. 23.34
  100. </price>
  101.  
  102.  
  103. 例子4:
  104. 这次我们给出一个更加复杂一些的文档:
  105. address.xml
  106. ---------------
  107. <customer>
  108. <name>Teiki</name>
  109. <address>
  110. <!-- address追加一个地址子元素 -->
  111. <prefecture>Zhejiang</prefecture>
  112. <city>Hangzhou</city>
  113. <street>Xilu Road,No.121,7F</street>
  114. </address>
  115. </customer>
  116.  
  117.  
  118. 为此,我们需要一个更加复杂一点的Schema文档:
  119. address.xsd
  120. -----------------
  121. 1: <?xml version="1.0"?>
  122. 2: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  123. 3:
  124. 4: <xsd:element name="customer">
  125. 5: <xsd:complexType>
  126. 6: <xsd:sequence>
  127. 7: <xsd:element name="name" type="xsd:string"/>
  128. 8: <!-- 追加子元素address-->
  129. 9: <xsd:element name="address">
  130. 10: <xsd:complexType>
  131. 11: <xsd:sequence>
  132. 12: <xsd:element name="prefecture" type="xsd:string"/>
  133. 13: <xsd:element name="city" type="xsd:string" />
  134. 14: <xsd:element name="street" type="xsd:string" />
  135. 15: </xsd:sequence>
  136. 16: </xsd:complexType>
  137. 17: </xsd:element>
  138. 18: <!-- end -->
  139. 19: </xsd:sequence>
  140. 20: </xsd:complexType>
  141. 21: </xsd:element>
  142. 22:
  143. 23:</xsd:schema>
  144.  
  145.  
  146. 不过,我们还可以采用ref元素来重新编写这个Schema文档:
  147. address2.xsd
  148. ----------------------
  149. 1: <?xml version="1.0"?>
  150. 2: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  151. 3:
  152. 4: <xsd:element name="customer">
  153. 5: <xsd:complexType>
  154. 6: <xsd:sequence>
  155. 7: <xsd:element name="name" type="xsd:string"/>
  156. 8: <xsd:element ref="address"/>
  157. 9: </xsd:sequence>
  158. 10: </xsd:complexType>
  159. 11: </xsd:element>
  160. 12:
  161. 13: <xsd:element name="address">
  162. 14: <xsd:complexType>
  163. 15: <xsd:sequence>
  164. 16: <xsd:element name="prefecture" type="xsd:string"/>
  165. 17: <xsd:element name="city" type="xsd:string" />
  166. 18: <xsd:element name="street" type="xsd:string" />
  167. 19: </xsd:sequence>
  168. 20: </xsd:complexType>
  169. 21: </xsd:element>
  170. 22:
  171. 23: </xsd:schema>
  172. 使用ref元素可以直接将其指向另一个模块,使文档更加具有可读性。
  173.  
  174.  
  175. 例子5:正则表达式约束
  176. pattern.xsd
  177. <?xml version="1.0" encoding="UTF-8"?>
  178. <zpc:schema xmlns:zpc="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" >
  179. <!--定义一种新的数据类型-->
  180. <zpc:simpleType name="price_Type">
  181. <zpc:restriction base="zpc:decimal">
  182. <!--必须匹配1XX.X的格式-->
  183. <zpc:pattern value="1\d{2}\.\d"/>
  184. </zpc:restriction>
  185. </zpc:simpleType>
  186. <!--定义元素-->
  187. <zpc:element name="price" type="price_Type"/>
  188. </zpc:schema>
  189.  
  190.  
  191. price.xml文件
  192. <?xml version="1.0" encoding="UTF-8"?>
  193. <price xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///C:/Documents%20and%20Settings/zhou/%e6%a1%8c%e9%9d%a2/pattern.xsd">
  194. 122.3
  195. </price>
  196.  
  197.  
  198. 例子6:使用<list.../>派生列表类型
  199. list.xsd文件
  200. <?xml version="1.0" encoding="UTF-8"?>
  201. <zpc:schema xmlns:zpc="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  202. <zpc:simpleType name="age_list_Type">
  203. <zpc:list>
  204. <zpc:simpleType>
  205. <zpc:restriction base="zpc:int">
  206. <zpc:maxInclusive value="100"/>
  207. <zpc:minExclusive value="0"/>
  208. </zpc:restriction>
  209. </zpc:simpleType>
  210. </zpc:list>
  211. </zpc:simpleType>
  212. <zpc:element name="age_list" type="age_list_Type"/>
  213. </zpc:schema>
  214.  
  215.  
  216. list.xml文件
  217. <?xml version="1.0" encoding="UTF-8"?>
  218. <age_list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///C:/Documents%20and%20Settings/zhou/%e6%a1%8c%e9%9d%a2/list.xsd">
  219. 12
  220. 23
  221. </age_list>
14、合并多个schema
  1. included.xsd:
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <zpc:schema xmlns:zpc="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" >
  4. <zpc:simpleType name="age_Type">
  5. <zpc:restriction base="zpc:int">
  6. <zpc:maxExclusive value="100"/>
  7. <zpc:minExclusive value="0"/>
  8. </zpc:restriction>
  9. </zpc:simpleType>
  10. </zpc:schema>
  11.  
  12. include.xsd:
  13. <?xml version="1.0" encoding="UTF-8"?>
  14. <zpc:schema xmlns:zpc="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.zpc.org" xmlns="http://www.zpc.org">
  15. <zpc:include schemaLocation="included.xsd"/>
  16. <zpc:element name="age" type="age_Type"/>
  17. </zpc:schema>
  18.  
  19. XML文件中引用include.xsd
  20. <?xml version="1.0" encoding="UTF-8"?>
  21. <age xmlns="http://www.zpc.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.zpc.org file:///C:/Documents%20and%20Settings/zhou/%e6%a1%8c%e9%9d%a2/include.xsd">
  22. 23
  23. </age>
  24.  
  25.  
  26. 15、可以使用redefine元素重定义被包含schema里的组件
  27.  
  28.  
  29. 16、使用include包含的schema要么没有目标命名空间,要么其目标命名空间与当前schema的目标命名空间相同
  30. 使用import包含的schema要么没有目标命名空间,要么其目标命名空间与当前schema的目标命名空间不同
  31. 例子:
  32. imported.xsd:
  33. <?xml version="1.0" encoding="UTF-8"?>
  34. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://zpc.com" xmlns="http://zpc.com">
  35. <xs:simpleType name="age_Type">
  36. <xs:restriction base="xs:int">
  37. <xs:maxExclusive value="100"/>
  38. <xs:minExclusive value="0"/>
  39. </xs:restriction>
  40. </xs:simpleType>
  41. </xs:schema>
  42.  
  43.  
  44. import.xsd:
  45. <?xml version="1.0" encoding="UTF-8"?>
  46. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.zpc2.com" xmlns="http://www.zpc2.com" xmlns:zpc="http://zpc.com">
  47. <!--导入名为imported.xsdschema,被导入的schema的命名空间是http://zpc.com-->
  48. <xs:import schemaLocation="imported.xsd" namespace="http://zpc.com"/>
  49. <xs:element name="age" type="zpc:age_Type"/>
  50. </xs:schema>

17、命名空间详解
  1. 例子1
  2. namespace.xsd
  3. <?xml version="1.0" encoding="UTF-8"?>
  4. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.zpc.com/schema" xmlns="http://www.zpc.com/schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  5. <!--定义一个book-list元素-->
  6. <xs:element name="book-list">
  7. <xs:complexType>
  8. <xs:sequence>
  9. <!--使用当前schema里的book元素,因为当前schema位于http://www.zpc.com/schema命名空间下,而且该命名空间没有指定对应限定短名,因此按如下格式使用book元素-->
  10. <xs:element ref="book" minOccurs="1" maxOccurs="unbounded"/>
  11. </xs:sequence>
  12. </xs:complexType>
  13. </xs:element>
  14. <!--定义一个item_Type复杂类型-->
  15. <xs:complexType name="item_Type">
  16. <xs:sequence>
  17. <xs:element name="book-name" type="xs:token"/>
  18. <xs:element name="price" type="xs:decimal"/>
  19. </xs:sequence>
  20. </xs:complexType>
  21. <!--这里使用http://www.zpc.com/schema下的item_Type类型时无需指定命名空间前缀-->
  22. <xs:element name="book" type="item_Type"/>
  23. </xs:schema>
  24.  
  25.  
  26. 对应的合格的xml文件
  27. <?xml version="1.0" encoding="UTF-8"?>
  28. <book-list xmlns="http://www.zpc.com/schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.zpc.com/schema file:///C:/Documents%20and%20Settings/zhou/%e6%a1%8c%e9%9d%a2/namespace.xsd">
  29. <book>
  30. <book-name/>
  31. <price>1</price>
  32. </book>
  33. <book>
  34. <book-name></book-name>
  35. <price>3</price>
  36. </book>
  37. </book-list>
  38.  
  39.  
  40. 例子2增加了命名空间前缀
  41. <?xml version="1.0" encoding="UTF-8"?>
  42. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.zpc.com/schema" xmlns:zpc="http://www.zpc.com/schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  43. <!--定义一个book-list元素-->
  44. <xs:element name="book-list">
  45. <xs:complexType>
  46. <xs:sequence>
  47. <!--使用当前schema里的book元素,因为当前schema位于http://www.zpc.com/schema命名空间下,而且该命名空间指定了对应限定短名zpc,因此按如下格式使用book元素-->
  48. <xs:element ref="zpc:book" minOccurs="1" maxOccurs="unbounded"/>
  49. </xs:sequence>
  50. </xs:complexType>
  51. </xs:element>
  52. <!--定义一个item_Type复杂类型-->
  53. <xs:complexType name="item_Type">
  54. <xs:sequence>
  55. <xs:element name="book-name" type="xs:token"/>
  56. <xs:element name="price" type="xs:decimal"/>
  57. </xs:sequence>
  58. </xs:complexType>
  59. <!--使用http://www.zpc.com/schema下的item_Type类型时必须指定命名空间前缀-->
  60. <xs:element name="book" type="zpc:item_Type"/>
  61. </xs:schema>
  62.  
  63.  
  64. 例子3XML允许为任何元素指定xmlns:prefix属性
  65. <?xml version="1.0" encoding="UTF-8"?>
  66. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.zpc.com/schema" xmlns:zpc="http://www.zpc.com/schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  67. <!--定义一个book-list元素-->
  68. <xs:element name="book-list">
  69. <xs:complexType>
  70. <xs:sequence xmlns:java="http://www.zpc.com/schema">
  71. <!--使用当前schema里的book元素,因为当前schema位于http://www.zpc.com/schema命名空间下,而且该命名空间也对应限定短名java,因此这里的限定名可以使用两种-->
  72. <xs:element ref="java:book" minOccurs="1" maxOccurs="unbounded"/>
  73. </xs:sequence>
  74. </xs:complexType>
  75. </xs:element>
  76. <!--定义一个item_Type复杂类型-->
  77. <xs:complexType name="item_Type">
  78. <xs:sequence>
  79. <xs:element name="book-name" type="xs:token"/>
  80. <xs:element name="price" type="xs:decimal"/>
  81. </xs:sequence>
  82. </xs:complexType>
  83. <!--限定名java只能作用在上面的位置,因为为某个元素指定了xmlns:prefix属性之后,该属性所引入的命名空间只对该元素及其子元素有效-->
  84. <xs:element name="book" type="zpc:item_Type"/>
  85. </xs:schema>
在模式文档中,我们很容易就能区分出不同名称空间中的元素和类型,带有xs前缀的元素和类型属于http://www.w3.org/2001/XMLSchema名称空间,而其他的元素和类型则属于目标名称空间。 ★需要注意的是,只有模式文档中的全局元素和全局属性才属于目标名称空间。 上例中book-list、item_Type都是全局的,而book-name、price是局部元素。 如果要限定局部元素和属性,可以通过xs:schema元素的elementFormDefault和attibuteFormDefault属性来设置。 为了指定模式文档中局部声明的元素必须被限定,可以将xs:schema元素的elementFormDefault属性的值设为"qualified"。 18、当需要在Schema中对指定命名空间下的元素(或属性)添加一致性约束时,必须为其添加短语作为前缀,否则一致性约束会认为只是对未命名 空间的元素(或属性)添加约束。 由于属性总是属于某个元素的,XML文档用户很容易确定该属性所处的命名空间-总是处于其所属元素所处的命名空间,因此通常无需添加限定短名 作为前缀,所以Schema中通常会指定attributeFormDefault="unqualified",表明在XML文档中使用局部属性时无需添加限定短名作为前缀。

猜你在找的XML相关文章