zoukankan      html  css  js  c++  java
  • xml--约束

    对于一般的开发人员来说:能根据约束文件来写出符合规则的xml文件即可。

    xml语法和xml约束:

    XML语法: 规范的xml文件的基本编写规则。(由w3c组织制定的)

    XML约束: 规范XML文件数据内容格式的编写规则。(由开发者自行定义)

    注意:xml约束是是用来定义数据内容格式的,并且是开发者自行定义。

    常用的约束技术:

    DTD约束:语法相对简单,功能也相对简单。学习成本也低。

    Schema约束:语法相对复杂,功能也相对强大。学习成本相对高!!!(名称空间)

    注意:具体的Schema约束可以参照w3school中的文档。

    DTD约束:

    文件后缀:xxx.dtd.

    导入方式:

    1)导入dtd的方式

      <1>内部导入

      <!DOCTYPE> 标签名 [条件]>

    1 <!DOCTYPE note [
    2   <!ELEMENT note (to,from,heading,body)>
    3   <!ELEMENT to      (#PCDATA)>
    4   <!ELEMENT from    (#PCDATA)>
    5   <!ELEMENT heading (#PCDATA)>
    6   <!ELEMENT body    (#PCDATA)>
    7 ]>

      <2>外部导入

        1>本地文件系统导入

        <!DOCTYPE> 标签名 SYSTEM  本地dtd文件路径>

    1 <!DOCTYPE note SYSTEM "note.dtd">

        2>公共外部导入

        <!DOCTYPE> 标签名 PUBLIC  文件路径>

    1 <!DOCTYPE 根元素 PUBLIC "http://gz.itcast.cn/itcast.dtd">

    2)DTD语法

    约束标签

      <!ELEMENT 元素名称 类别>  或 <!ELEMENT 元素名称 (元素内容)>

      类别:

                   空标签: EMPTY。 表示元素一定是空元素。

                   普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。

                   任何内容: ANY。表示元素的内容可以是任意内容(包括子标签)。

      元素内容:

        顺序问题:

                             <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>: 按顺序出现子标签

               次数问题:

                              标签   :  必须且只出现1次。

                              标签+  : 至少出现1次

                              标签*   : 0或n次。

                              标签?  : 0 或1次。

    约束属性

      <!ATTLIST 元素名称 属性名称 属性类型 默认值>    

      默认值:

                    #REQUIRED 属性值是必需的

                    #IMPLIED   属性不是必需的

                    #FIXED value 属性不是必须的,但属性值是固定的

          属性类型:控制属性值的

                    CDATA :表示普通字符串

                    en1|en2|..): 表示一定是任选其中的一个值

                    ID:表示在一个xml文档中该属性值必须唯一。值不能以数字开头

    Schema约束:

    文件后缀:xxx.xsd

    Schema中用的最多的就是名称空间(nameSpace)。在xml中定义名称空间的关键字是:xmlns;定义名称空间别名的Schema地址的关键字是:schemaLocation。

    原理图如下:

    targetNamespace元素用于指定schema文档中声明的元素属于哪个名称空间。

    代码示例:

    book.xsd文件

     1 <?xml version="1.0" encoding="UTF-8" ?> 
     2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
     3                       targetNamespace="http://www. itcast.cn"
     4                       elementFormDefault="qualified">
     5     <xs:element name='书架' >
     6         <xs:complexType>
     7             <xs:sequence maxOccurs='unbounded' >
     8                 <xs:element name='书' >
     9                     <xs:complexType>
    10                         <xs:sequence>
    11                             <xs:element name='书名' type='xs:string' />
    12                             <xs:element name='作者' type='xs:string' />
    13                             <xs:element name='售价' type='xs:string' />
    14                         </xs:sequence>
    15                     </xs:complexType>
    16                 </xs:element>
    17             </xs:sequence>
    18         </xs:complexType>
    19     </xs:element>
    20 </xs:schema>

    xml文件

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 <itcast:书架 xmlns:itcast="http://www.itcast.cn"
     4                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5                 xsi:schemaLocation="http://www.itcast.cn book.xsd">
     6 
     7     <itcast:>
     8         <itcast:书名>JavaScript网页开发</itcast:书名>
     9         <itcast:作者>张孝祥</itcast:作者>
    10         <itcast:售价>28.00元</itcast:售价>
    11     </itcast:书>
    12 </itcast:书架>
  • 相关阅读:
    pytest+allure详情版
    【Django】django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required
    Docker-Portainer
    滑动解锁和截图
    调用JavaScript(浏览器滚动条)
    WebDriver操作cookie
    下载文件
    多表单切换
    利用parameterized模块进行unittest参数化
    关于软件测试必备的技能
  • 原文地址:https://www.cnblogs.com/nicker/p/6439465.html
Copyright © 2011-2022 走看看