DTD文件使用总结

DTD文件使用总结

    • 1. 声明元素
      • 1.1.声明格式
      • 1.2 具体声明场景
      • 1.3 声明时的注意点
    • 2. 声明属性
      • 2.1 声明格式
      • 2.2 属性类型
      • 2.2 声明时attribute-value的可选值
    • 3. dtd声明类型
      • 3.1 内部声明
      • 3.2 外部SYSTEM声明
      • 3.3 外部PUBLIC声明

1. 声明元素


1.1.声明格式


1.2 具体声明场景

  • 声明只有文本内容的元素:


  • 声明有子元素的元素


  • 声明只出现一次的元素

实例:

上面的例子声明了:message 子元素必须出现一次,并且必须只在 “note” 元素中出现一次。


  • 声明最少出现一次的元素

实例:

上面的例子中的加号(+)声明了:message 子元素必须在 “note” 元素内出现至少一次。


  • 声明出现零次或多次的元素

实例:

上面的例子中的星号(*)声明了:子元素 message 可在 “note” 元素内出现零次或多次。


  • 声明出现零次或一次的元素

实例:

上面的例子中的问号(?)声明了:子元素 message 可在 “note” 元素内出现零次或一次。


  • 声明"非…/即…"类型的内容

实例:

上面的例子声明了: “note” 元素必须包含 “to” 元素、“from” 元素、“header” 元素,以及非 “message” 元素即 “body” 元素。


  • 声明混合型的内容

实例:

上面的例子声明了:“note” 元素可包含出现零次或多次的 PCDATA、“to”、“from”、“header” 或者 “message”。


1.3 声明时的注意点


顺序性: 当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中

完整性: 在一个完整的声明中,子元素也必须被声明


2. 声明属性


2.1 声明格式

声明格式:

示例:


2.2 属性类型

类型 描述
CDATA 值为字符数据 (character data)
(en1|en2|…) 此值是枚举列表中的一个值
ID 值为唯一的 id
IDREF 值为另外一个元素的 id
IDREFS 值为其他 id 的列表
NMTOKEN 值为合法的 XML 名称
NMTOKENS 值为合法的 XML 名称的列表
ENTITY 值是一个实体
ENTITIES 值是一个实体列表
NOTATION 此值是符号的名称

2.2 声明时attribute-value的可选值

解释
具体的值 属性的默认值
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的
#FIXED value 属性值是固定的

示例:

  • 默认值



合法的 XML:

  • #REQUIRED



合法的 XML:


非法的 XML:

假如您没有默认值选项,但是仍然希望强制作者提交属性的话,请使用关键词 #REQUIRED。

  • #IMPLIED



合法的 XML:


合法的 XML:

假如您不希望强制作者包含属性,并且您没有默认值选项的话,请使用关键词 #IMPLIED。

  • #FIXED



合法的 XML:


非法的 XML:

如果您希望属性拥有固定的值,并不允许作者改变这个值,请使用 #FIXED 关键词。如果作者使用了不同的值,XML 解析器会返回错误。

  • 列举属性值



XML 例子:

如果您希望属性值为一系列固定的合法值之一,请使用列举属性值。

3. dtd声明类型


3.1 内部声明

xml内容和dtd在同一个xml文件内.

声明位置: 之后, 元素之前

声明格式:

作用范围: 当前xml范围内

声明示例:


DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>Toveto>
<from>Janifrom>
<heading>Reminderheading>
<body>Don't forget me this weekendbody>
note>

以上 DTD 解释如下:

  • !DOCTYPE note (第二行)定义此文档是 note 类型的文档
  • !ELEMENT note (第三行)定义 note 元素有四个元素:“to、from、heading,、body”
  • !ELEMENT to (第四行)定义 to 元素为 “#PCDATA” 类型
  • !ELEMENT from (第五行)定义 from 元素为 “#PCDATA” 类型
  • !ELEMENT heading (第六行)定义 heading 元素为 “#PCDATA” 类型
  • !ELEMENT body (第七行)定义 body 元素为 “#PCDATA” 类型

3.2 外部SYSTEM声明

一般项目内声明的dtd约束, 项目内可以复用

格式:

注意: dtdFileName可以是xml的相对路径或文件绝对路径

outer.xml文件内容:


DOCTYPE note SYSTEM "my.dtd">
<note>
    <to>Toveto>
    <from>Janifrom>
    <heading>Reminderheading>
    <body>Don't forget me this weekend!body>
note>

my.dtd文件内容(和outer.xml同一级目录下):







3.3 外部PUBLIC声明

第三方公共的dtd约束

声明格式:

示例:

web.xml内容







参考: https://www.runoob.com/dtd/dtd-tutorial.html

你可能感兴趣的:(Java,xml,dtd)