zoukankan      html  css  js  c++  java
  • 一脚踩进java之xml02——约束之DTD

    一、为什么要约束

    1.1 XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。(如:Tomcat)
    1.2 XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束。
    1.3 两个概念:
      格式良好的XML:遵循XML语法的XML
      有效的XML:遵循约束文档的XML
    1.4 总之:约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等等。

    二、约束概述

    2.1 什么是XML约束
      在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。
    2.2 为什么需要XML约束
    2.3 常用的约束技术
      1)XML DTD
      2)XML Schema

    三、DTD约束快速入门

     在<书>标签内除了书名、作者、售价外添加其它标签,就会提示出错。

    3.2 将DTD与XML文档关联三种方式

      1)DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写 

      2)使用内部DTD
        <!DOCTYPE 根节点 [ DTD的代码 ]>
      3)使用外部DTD
        <!DOCTYPE 根节点 SYSTEM “DTD的地址” >
      4)使用网络DTD
        <!DOCTYPE 根节点 PUBLIC “DTD的名称” “DTD的地址” >

    四、DTD定义元素

    4.1 在DTD文档中使用ELEMENT关键字来声明一个XML元素。
    4.2 语法:<!ELEMENT 元素名称 使用规则>
      1)使用规则:
        ①(#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)
        ②EMPTY:用于指示元素的主体为空。比如<br/>
        ③ANY:用于指示元素的主体内容为任意类型。
        ④(子元素):指示元素中包含的子元素
      2)定义子元素及描述它们的关系:
        ①如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。
          如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)
        ②如果子元素用“|”分开,说明任选其一。
          如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)
        ③用+、*、?来表示元素出现的次数
          如果元素后面没有+*?:表示必须且只能出现一次
          +:表示至少出现一次,一次或多次
          *:表示可有可无,零次、一次或多次
          ?:表示可以有也可以无,有的话只能有一次。零次或一次
          如: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

     五、属性(ATTLIST)定义

    5.1 属性声明

    属性声明举例
    <!ATTLIST 商品
      类别 CDATA #REQUIRED 必须的
      颜色 CDATA #IMPLIED 可选的
    >

    对应的XML为:<商品 类别=“服装” 颜色=“黄色”/>

    5.2 属性值类型:
      1)CDATA:表示属性的取值为普通的文本字符串
      2)ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)
      3)ID:表示属性的取值不能重复(不能只写数字)
    5.3 设置说明
      1)#REQUIRED:表示该属性必须出现
      2)#IMPLIED:表示该属性可有可无
      3)#FIXED:表示属性的取值为一个固定值。语法:#FIXED "固定值"
      4)直接值:表示属性的取值为该默认值

    5.4 示例

    <!ATTLIST 页面作者
      姓名 CDATA #IMPLIED
      年龄 CDATA #IMPLIED
      联系信息 CDATA #REQUIRED
      网站职务 CDATA #FIXED "页面作者"
      个人爱好 CDATA "上网"
    >

    六、定义引用实体

    6.1 概念:在DTD中定义,在XML中使用
    6.2 语法:<!ENTITY 实体名称 “实体内容”>
    6.3 引用方式(注意是在XML中使用):&实体名称;

    DTD中定义:
      <!ENTITY copyright “xxx版权所有”>
    XML中引用:
      &copyright;

  • 相关阅读:
    君子藏器于身,伺时而动
    高级前端面试集锦
    ES6标准入门(第三版).pdf----推荐指数⭐⭐⭐⭐⭐
    《Vue.js实战》--推荐指数⭐⭐⭐⭐
    如何让vue自定义组件可以包裹内容,并且渲染出来,以及组件的组合使用
    vue里如何灵活的绑定class以及内联style
    为什么VUE注册组件命名时不能用大写的?
    在github上搭建一个静态的个人网站
    leetcode-6-basic
    leetcode-5-basic
  • 原文地址:https://www.cnblogs.com/smilehq/p/12591629.html
Copyright © 2011-2022 走看看