精华内容
下载资源
问答
  • DTD约束

    2019-05-23 20:59:28
    DTD约束 什么是DTD约束: 什么是格式良好XML? DTD语法 文档声明: 基本语法 基础案例

    什么是DTD约束:

    DTD(Document Type Definition)文档类型定义,用来约束xml文档。规定xml文档中元素的名称,子元素的名称及顺序,元素的属性等等。

    什么是格式良好XML?

    1.1 有且只有一个根元素
    1.2 XML标签大小写正确区分
    1.3 正确使用结束标签
    1.4 正确嵌套标签
    1.5 使用了合法的标签名
    1.6 定义有效的属性

    DTD语法

    文档声明:

    1、内部DTD,在xml文档内部嵌入DTD,只对当前xml有效。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <!DOCTYPE web-app[
        <!-- ......具体语法  -->
      ]>
      <web-app></web-app>
    

    2、外部DTD(本地DTD),DTD在本地文件系统,内部自己项目使用。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE web-app SYSTEM "web-app_....">
    <!-- SYSTEM "DTD约束文件所在路径"-->
    <web-app></web-app>
    

    3、外部DTD(网络)

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE web-app PUBLIC "dtd的名称"
    "dtd文件的路径">
    <web-app></web-app>
    

    基本语法

    元素定义的语法

    <!ELEMENT element-name (type)>
       注:根标签也要定义!!!
    

    元素的分类

    <!ELEMENT element-name EMPTY>//空元素
    <!ELEMENT element-name (#PCDATA)>//文本元素
    <!ELEMENT element-name (e1,e2)>//混合元素
    

    元素的限制
    类似于正则表达式

    <!-- 复杂元素 -->
    <!ELEMENT person (name,age,sex)>:子元素只能出现一次
    表示子元素可以出现的次数:
    +:表示只能出现一次或者多次
    ?:表示零次或者一次
    *:表示出现任意次
    <!ELEMENT person (name+,age?,sex*)>
    子元素列表以逗号隔开,表示出现的顺序
    子元素用|隔开,表示只能出现一个
    
    <!--//简单元素-->
    <!ELEMENT name (#PCDATA)><!--//(#PCDATA)表示name是字符串类型-->
    <!ELEMENT age EMPTY><!--//EMPTY表示age约束为空,不能有值-->
    <!ELEMENT sex ANY><!--//ANY表示任意,可有值,可无值-->
    <!ELEMENT census (side|country)>
    <!ELEMENT side (#PCDATA)>
    <!ELEMENT country (#PCDATA)>
    
    

    定义属性

    <!ATTLIST 元素名称 
    				属性名称 属性类型 约束条件>
    
    属性类型:
    	CDATA:字符串类型
    	枚举类型:(XX|XX|XX)只能在一定的范围内出现值,而且值只能出现一次
    	ID:只能以字母或下划线开头
    约束条件:
    	#REQUIRED:属性必须存在
    	#IMPLIED:属性可有可无
    	#FIXED:表示一个固定值 #FIXED "ABC"//没有#FIXED就表示默认值
    
    

    引用实体类

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE person[
    <!ELEMENT person (student*)>
    <!ENTITY text "hello world">
    <!--
    	定义引用实体:在dtd中定义,在xml中使用。
    	语法:<!ENTITY 实体名称  "实体内容">
    	应用方法:&实体名称;
    	注意:定义实体需要写在内部dtd里面,如果写在外部的dtd里面,有一些浏览器不能得到实体内容
    -->
    ]>
    	<person>
    		<student>&text;</student>
    	</person>
    

    在这里插入图片描述

    基础案例

    在这里插入图片描述

    展开全文
  • DTD 约束

    2019-07-09 22:37:20
    特定的框架处理特定问题# XML-DTD约束 1.什么是格式良好XML 有且只有一个根元素 XML标签大小写正确区分 正确使用结束标签 正确嵌套标签 使用了合法的标签名 定义有效的属性 代码片 <?xml version="1.0" ...

    DTD 约束

    简介
    设计模式

    它是用来解决现实中出现的一类问题
    框架的由来

    就是由多种设计模式配合形成的

    特定的框架处理特定问题# XML-DTD约束

    1.什么是格式良好XML

    有且只有一个根元素
    XML标签大小写正确区分
    正确使用结束标签
    正确嵌套标签
    使用了合法的标签名
    定义有效的属性

    代码片

    <?xml version="1.0" encoding="UTF-8"?>
    <persons>
     <person pid="p1" sex="男" qq="aaa" parent="p2">
      <name>张小明</name>
      <age>10</age>
      <contact>
       <phone>1234567</phone>
      </contact>
      <br/>
     </person>
     <person pid="p2">
      <name>张大明</name>
      <age>35</age>
      <contact>
       <email>1222111201@qq.com</email>
      </contact>
     </person>
    </persons>

    2.步骤
    看xml中有多少元素,有多少元素就 写几个<!ELEMENT>

    判断元素是简单元素还是复杂元素。

    简单元素:没有子元素的元素。<!ELEMENT 元素名称 (子元素) 复杂元素:拥有子元素的元素。<!ELEMENT 元素名称 (#PCDATA)>
    3.DTD定义元素的语法

    1. 空标签<!ELEMENT element-name EMPTY>//空元素(IMPLIED非必须)

    2. 文本标签 <!ELEMENT element-name (#PCDATA)>//文本元素

    3. 混合标签 <!ELEMENT element-name (e1,e2)>//混合元素.
      下面展示一些 内联代码片。

    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE persons [
    <!-- DTD声明 -->
        <!ELEMENT persons (person*)>
        <!ELEMENT person (name,age,contact,br?)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        <!ELEMENT contact (phone|email)>
        <!ELEMENT phone (#PCDATA)>
        <!ELEMENT br EMPTY>
        <!ELEMENT email (#PCDATA)>
    ]>
    <persons>
     <person>
      <name>张小明</name>
      <age>10</age>
      <contact>
       <phone>1234567</phone>
      </contact>
      <br/>
     </person>
     <person>
      <name>张大明</name>
      <age>35</age>
      <contact>
       <email>12211120@qq.com</email>
      </contact>
     </person>
    </persons>

    4.DTD定义属性的语法

    **<!ATTLIST element-name
    att_name type

    attribute
    ID
    (男|女)
    CDATA
    IDREF
    reference
    #REQUIRED/#IMPLIED(非必须)**

    下面展示一些 内联代码片。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE persons [
    <!-- DTD约束声明 -->
        <!ELEMENT persons (person*)>
        <!ELEMENT person (name,age,contact,br?)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        <!ELEMENT contact (phone|email)>
        <!ELEMENT phone (#PCDATA)>
        <!ELEMENT br EMPTY>
        <!ELEMENT email (#PCDATA)>
        <!ATTLIST person
            pid ID #REQUIRED
            sex (|) '男'
            qq CDATA #IMPLIED
            parent IDREF #IMPLIED
        >
    ]>
    <persons>
     <person pid="p1" sex="男" qq="aaa" parent="p2">
      <name>张小明</name>
      <age>10</age>
      <contact>
       <phone>1234567</phone>
      </contact>
      <br/>
     </person>
     <person pid="p2">
      <name>张大明</name>
      <age>35</age>
      <contact>
       <email>122111201@qq.com</email>
      </contact>
     </person>
    </persons>

    5.XML中的特殊符号

    1. &(逻辑与) &
    2. <(小于) <
    3. (大于)>

    4. "(双引号) "
    5. '(单引号) ’
      自定义属性作业

    下面展示一些 内联代码片。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE config [
        <!ELEMENT config (action*) >
        <!ELEMENT action (forward*) >
        <!ATTLIST action
            path CDATA #REQUIRED
            type CDATA #REQUIRED
        >
        <!ATTLIST forward
            name CDATA #REQUIRED
            path CDATA #REQUIRED
            redirect CDATA #REQUIRED
        >
    ] >
     <!--config标签:可以包含0~N个action标签-->
    <config>
     <!--action标签:可以饱含0~N个forward标签 path:/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径
      type:字符串,非空,子控制器的完整类名-->
     <action path="/registerAction" type="test.action.RegisterAction">
      <forward name="success" path="/index.jsp" redirect="true" />
      <forward name="failed" path="/register.jsp" redirect="false" />
     </action>
     <action path="/loginAction" type="test.action.LoginAction">
      <forward name="a" path="/index.jsp" redirect="false" />
      <forward name="b" path="/welcome.jsp" redirect="true" />
     </action>
    </config>
    展开全文
  • dtd约束

    2018-11-26 12:47:37
    dtd约束 dtd文件的开发步骤(简易入门) 创建dtd文件 dtd文件想要约束的元素(定义元素)语法:&lt;!ELEMENT 元素名称 元素类型&gt; 类型包括简单和复杂 简单元素(中间出现字符串,没有子节点) -- &...

    dtd约束

    dtd文件的开发步骤(简易入门)

    • 创建dtd文件
    • dtd文件想要约束的元素(定义元素)语法:<!ELEMENT 元素名称 元素类型>        类型包括简单和复杂
    • 简单元素(中间出现字符串,没有子节点) --        <!ELEMENT 元素名称 (#PCDATA)>
    • 复杂元素(包含子节点)                              --        <!ELEMENT 元素名称 (子节点1,子节点2....)>
    • 在xml的文档中引入dtd文件(三种)
    1. 引入本地的dtd文件       <!DOCTYPE 根节点 SYSTEM "dtd文件的地址" >
    2. 在xml文件中直接书写dtd代码             <!DOCTYPE 根节点[   dtd的代码   ]>
    3. 引入外部的文件的方式,网络的dtd文件       <!DOCTYPE  根节点  PUBLIC   "dtd文件的名称" "dtd文件的地址" >

    示例:

    第一种方式,引入本地dtd
    dtd约束文件(book.dtd)
    <?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT 书架 (书)>
    <!ELEMENT 书 (书名,作者,售价,简介)>
    <!ELEMENT 书名 (#PCDATA)>
    <!ELEMENT 作者 (#PCDATA)>
    <!ELEMENT 售价 (#PCDATA)>
    <!ELEMENT 简介 (#PCDATA)>
    
    xml文件(被约束的文件)(同目录下book.xml)
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE 书架 SYSTEM "book.dtd">
    <书架>
        <书>
            <书名>数学课本</书名>
            <作者>张三</作者>
            <售价>100</售价>
            <简介>高中课本</简介>
        </书>
    </书架>
    第二种方式,xml中写dtd代码
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE 书架 [
        <!ELEMENT 书架 (书)>
        <!ELEMENT 书 (书名,作者,售价,简介)>
        <!ELEMENT 书名 (#PCDATA)>
        <!ELEMENT 作者 (#PCDATA)>
        <!ELEMENT 售价 (#PCDATA)>
        <!ELEMENT 简介 (#PCDATA)>
    ]>
    <书架>
        <书>
            <书名>数学课本</书名>
            <作者>张三</作者>
            <售价>100</售价>
            <简介>高中课本</简介>
        </书>
    </书架>
    第三种引入网络的dtd文件(struts.xml)
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    
    
    

     dtd的语法

    • 定义元素

    1.关键字:

                   <!ELEMENT 元素名称  元素类型>

    2.元素类型: 

    •  (#PCDATA)    可解析字符数据(字符串)
    • (子节点)       复杂元素,编写子节点
    • EMPTY              空(没有括号  都是大写)
    • ANY                  任意(没有括号  都是大写)

    3.子节点:当前元素下面出现的子节点

    3.1子节点之间的关系

    •      ,        代表子节点的出现是有顺序的
    •      |       代表子节点的出现是或的关系(任选其一)

    3.2子节点出现的次数

    • +      代表子节点出现的次数是1次或多次
    • *       代表子节点出现的次数是0次或多次
    • ?     代表子节点出现的次数是0次或1次
    • 定义属性

    1.关键字(attribute  list) 

                   <!ATTLIST    元素名称   

                     属性名称   属性类型    属性约束

                     属性名称   属性类型    属性约束         

                     >

    2.例如:<!ATTLIST 书 出版社 CDATA #REQUIRED>

    3.属性类型:

                   CDATA                       字符数据(字符串)

                   枚举(没有关键字)       写法:(值1 | 值2)代表在值1和值2中选择一个

                   ID                             代表就是唯一的值(不能只写数字)

    4.属性约束:

                 #REQUIRED      :代表属性必须出现

                #IMPLIED            :代表属性的出现是可选的

                #FIXED                : 固定值      写法:#FIXED  "值"

               默认值                   : 代表默认值       "值"   

    定义实体(了解):

    1.关键字:    <!ENTITY  别名   "值">

    2.作用:可以在xml文件中来引入别名

    3.引入实体:   &别名;

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,883
精华内容 8,353
关键字:

dtd约束