JavaWeb-XML约束

一、DTD
二、Schema
  1. Schema约束文档本身就是一个XML文档。
  2. Schema约束文档的扩展名为.xsd
  3. Schema对名称空间支持很好
    1. 名称空间怎么来的:
      1. XML可以自定义标签(元素),当两个元素名相同时会产生冲突。名称空间就是来避免冲突的。
      2. 我们可以使用前缀解决冲突
        1. <?xml version="1.0" encoding="UTF-8"?>
        2. <AUTHOR>
        3. <AU:TITLE>Mr.</AU:TITLE> //这里的AU前缀
        4. <AU:FIRST>Sidney</AU:FIRST>
        5. <AU:SECOND>Sheldon</AU:SECOND>
        6. <BO:BOOK>
        7. <BO:TITLE>Sky is Falling</BO:TITLE>//这里的BO前缀,同AU一起避免了TITLE冲突
        8. <BO:PRICE>$5.6</BO:PRICE>
        9. </BO:BOOK>
        10. <BO:BOOK>
        11. <BO:TITLE>Rage of Angels</BO:TITLE>
        12. <BO:PRICE>$4.3</BO:PRICE>
        13. </BO:BOOK>
        14. </AUTHOR>
      3. XML名称空间通过标签名关联一个词汇来解决冲突问题。使不同名称空间的多个元素名出现在一个XML文档中。
      4. 创建名称空间的语法:xmlns:prefix = namespacevalue
      5. 元素应用名称空间的语法是:<NameSpace:ElementName>content</NameSpace:ElementName>//在元素名前添加一个名称空间
      6. 属性应用名称空间的语法是:     
        1. <ElementName  xmlns:RD='http://www.ibm.com/Univ/RD' >
          1. <RD:Dean RD: id=”1” > John</RD:Dean> 
          2. </ElementName>
      7. 缺省名称空间举例:当大部分元素属于同一个名称空间时,可以定义这个名称空间为缺省。
        1. 语法为: xmlns="namespace",这里与不缺省的区别是没有引用名。
        2. 举例:<NAME xmlns="http://www.ibmindia.com/NA">content</NAME>
  4. 由于Schema本身就是一个XML文档,因此必须有一个根元素schema
  5. 一个Schema约束实例:
    1. <?xml version="1.0" encoding="UTF-8"?>

    2. **********schama元素头开始************
      1. // 注意这行的命名空间xmlns可以在所有的XML定义,被它修饰的元素、属性、子节点都来自该名称空间。这里就表示schema来自xs这个W3C名称空间
      2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 

      3. //注意这行的 targetNamespace是W3C schema的属性,表示 Schema 要约束的名称空间。
      4. targetNamespace="http://www.itcast.cn"

      5. elementFormDefault="qualified">
    3. **********schama元素头结束************

    4. <xs:element name='书架' >
    5. <xs:complexType>
    6. <xs:sequence maxOccurs='unbounded' >
    7. <xs:element name='书' >
    8. <xs:complexType>
    9. <xs:sequence>
    10. <xs:element name='书名' type='xs:string' />
    11. <xs:element name='作者' type='xs:string' />
    12. <xs:element name='售价' type='xs:string' />
    13. </xs:sequence>
    14. </xs:complexType>
    15. </xs:element>
    16. </xs:sequence>
    17. </xs:complexType>
    18. </xs:element>
    19. </xs:schema>
  6. 如何引入Schema
    1. )建立一个新的xml文件,加入声明。
      1. <?xml verson="1.0" encoding="UTF-8"?>
    2. )查看要引入的schema约束文档,找到第一个元素即根元素。
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <书架>
      3. </书架>
    3. )思考:“书架”来自哪个名称空间?用xmlns声明该元素来自的名称空间。
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <书架 xmlns:itcast="">
      3. </书架>
    4. )查看schema,把targetNamespace的值写到xml中的名称空间定义中
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <itcast:书架 xmlns:itcast="http://www.itcast.cn">
      3. </itcast:书架>
    5. )XML中使用的名称空间对应的是那个xsd约束文件?用schemaLocation来制定名称空间和xsd文件的对应关系
      1. <?xml version="1.0" encoding="UTF-8"?>

      2. <itcast:书架    xmlns:itcast="http://www.itcast.cn" //被itcast修饰的都来自 itcast 名称空间,即schema约束的名称空间targetNamespace
      3. schemaLocation="http://www.itcast.cn books.xsd"> //xsd所在的名称空间
      4. </itcast:书架>

    6. )思考:schemaLocation又来自哪个名称空间呢?来自一个标准的名称空间 (W3C)http://www.w3.org/2001/XMLSchema-instance
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <itcast:书架    xmlns:itcast="http://www.itcast.cn"//xml所在名称空间,即schama约束的命名空间
      3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"// schema的名称空间
      4. xsi:schemaLocation="http://www.itcast.cn books.xsd">// schemaLocation 的xsd文件所在的空间
      5. </itcast:书架>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值