XML实用教程 第9讲 2006.3 计算机与电子系—顾兵
XML Schema元素详解(一) 一个Schema文件根元素为<Schema> Schema文件关键元素有8种,它们对XML中允许的语法和结构进行定义。 Schema语法示例: <?xml version=“1.0”?> <Schema name=“mySchema” xmlns=“urn:schemas-microsoft-com:xml-data” xmlns:dt=“urn:schemas-microsoft-com:datatypes”> … </Schema> 2006.3 计算机与电子系—计算机技术教研室
XML Schema元素详解(二) <ElementType>元素用于声明XML文档中使用的新元素,它是XML Schema中重要元素之一. <element>元素对<ElementType>声明的元素的内容进行定义,说明在指定元素类型中允许使用哪些子元素. group元素是用于将XML 文档中的元素分组。order可指定该分组中的元素或子分组的顺序. 2006.3 计算机与电子系—计算机技术教研室
XML Schema元素详解(三) <AttributeType>元素定义Schema中使用的属性类型。根据出现位置不同,其作用范围也不一样。 <attribute>元素对<AttributeType>声明的属性进行具体的定义 属性也可分组:<AttrGroup> 在元素声明中引用:<AttrGroupRef> 2006.3 计算机与电子系—计算机技术教研室
属性定义示例 <AttributeType name="等级" dt:type="char" required="yes"/> <AttributeType name="编号" dt:type="id" required="yes"/> <ElementType name="商品" content="eltonly"> <attribute type="等级" default="A"/> <attribute type="编号"/> </ElementType> 2006.3 计算机与电子系—计算机技术教研室
XML Schema元素详解(四) <datatype>元素定义Schema元素中的数据类型,它是XML Schema中一个重要元素,也是XML Schema的一大特色,用于为ElementType和AttributeType指定数据类型。 <description>元素的主要作用是为ElementType和AttributeType元素提供描述信息。 2006.3 计算机与电子系—计算机技术教研室
初识Schema文件 1. <?xml version="1.0" encoding="GB2312" ?> 9. <ElementType name= "联系人" content="eltOnly"> 10. <element type= "姓名" /> 11. <element type= "年龄" /> 12. <element type= "电话" /> 13. <element type= "地址" /> 14. </ElementType> 15. <ElementType name= "通讯录" content="eltOnly"> 16. <element type= "联系人" /> 17. <attribute type="序号"/> 18. <attribute type="性别"/> 19. </ElementType> 20.</Schema> 1. <?xml version="1.0" encoding="GB2312" ?> 2. <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> 3. <AttributeType name="序号"/> 4. <AttributeType name="性别"/> 5. <ElementType name= "姓名"/> 6. <ElementType name= "年龄"/> 7. <ElementType name= “电话” dt:type=“number"/> 8. <ElementType name= "地址" /> 2006.3 计算机与电子系—计算机技术教研室
Schema应用示例 Schema文件清单: <?xml version="1.0" encoding="gb2312"?> <Schema name="stockSchema" xmlns="uri :schemas-microsoft-com:xml-data" xmlns :dt="uri:schemas-microsoft-com:datatypes" xmlns :myNS="http://www.xml_step_by_step.edu/ns.xml"> <ElementType name="持股信息" content="eltonly" dt:type="String" order="one"> <ElementType name="股东" content=“eltonly"/> <ElementType name="姓名" dt:type="String"/> <ElementType name="武商股份" dt:type="Int"/> </ElementType> </Schema> 2006.3 计算机与电子系—计算机技术教研室
XML文档(外部调用)清单 <?xml version="1.0" encoding="gb2312"?> <!--?xml-stylesheet type="text/xsl" href="3-13.xsl"?--> <持股信息 xmlns:stockschema="4-4(Schema).xml"> <stockschema:股东> <姓名>张祥</姓名> <武商股份>10000</武商股份> <神龙电业>8000</神龙电业> <浦发银行>15000</浦发银行> <兴和基金>6000</兴和基金> </stockschema:股东> <姓名>刘娴</姓名> <武商股份>5000</武商股份> <神龙电业>12000</神龙电业> <浦发银行>9000</浦发银行> <兴和基金>4000</兴和基金> </持股信息> 2006.3 计算机与电子系—计算机技术教研室
IE浏览器中的效果 2006.3 计算机与电子系—计算机技术教研室
制定Schema示例 XML文档booklist.xml清单: <?xml version="1.0"?> <title>Staight Talk About Computers</title> <author>Lars Peterson</author> </book> <title>Digital Control System</title> <author>BENJAMIN C.KUO</author> <author>Carlos Diaz</author> </booklist> 2006.3 计算机与电子系—计算机技术教研室
1.为最底层元素制定规则 定义<title><author>为只能包含字符串的文本元素: <ElementType name=“title” content=“textonly” dt:type=“string”/> <ElementType name=“author” content=“textonly” dt:type=“string”/> 2006.3 计算机与电子系—计算机技术教研室
2.为上一层子元素制定规则 定义<book>只能包含子元素,且子元素出现的顺序是一定的,然后,在其内部定义它包括一个<title>和任意个<author>子元素: <ElementType name=“book” content=“eltOnly” order=“seq”> <element type=“title”/> <element type=“author” maxOccurs=“*”/> </ElementType> 2006.3 计算机与电子系—计算机技术教研室
3.定义根元素 用同样的方法说明根元素<booklist>: <ElementType name=“booklist” content=“eltOnly”> <element type=“book” minOccurs=“0” maxOccurs=“*”/> </ElementType> 2006.3 计算机与电子系—计算机技术教研室
完整的XML Schema文件 Book(schema).xml清单: <?xml version="1.0"?> <Schema name="mySchema" xmlns:="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="title" content="textonly" dt:type="string"/> <ElementType name="author" content="textonly" dt:type="string"/> <ElementType name="book" content="eltOnly" order="seq"> <element type="title"/> <element type="author" maxOccurs="*"/> </ElementType> <ElementType name="booklist" content="eltOnly"> <element type="book" minOccurs="0" maxOccurs="*"/> </Schema> 2006.3 计算机与电子系—计算机技术教研室
修改原XML文档 Booklist01.xml清单: <?xml version="1.0"?> <mySchema:booklist xmlns:mySchema="book(schema).xml"> <mySchema:book> <mySchema:title>Staight Talk About Computers</mySchema:title> <mySchema:author>Lars Peterson</mySchema:author> </mySchema:book> <mySchema:title>Digital Control System</mySchema:title> <mySchema:author>BENJAMIN C.KUO</mySchema:author> <mySchema:author>Carlos Diaz</mySchema:author> </mySchema:booklist> 2006.3 计算机与电子系—计算机技术教研室
IE游览效果 2006.3 计算机与电子系—计算机技术教研室
Schema的可扩展性 用户可在XML Schema中使用自已定义的元素和属性: <ElementType name=“price” xmlns:myExt=“urn:myextensions”dt:type=“float”> <myExt:salestax>17.5</myExt:salestax> <myExt:bulkbuy>20</myExt:bulkbuy> <myExt:discount>5.0</myExt:discount> </ElementType> 2006.3 计算机与电子系—计算机技术教研室
第4章练习题 在XML文件中使用DTD有何好处 Schema有什么特点 为学生学籍管理的XML文档设计DTD文件 为上题创建XML Schema文件 2006.3 计算机与电子系—计算机技术教研室