xml学习总结(二)——dtd


一、简单的dtd文件

1.代码

dtd文件:

<!ELEMENT person (name, age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>

xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person SYSTEM "./demo1.dtd">
<person>
    <name>zhangsan</name>
    <age>18</age>
</person>

2.内容说明

  1. 标签(元素)
    • 复杂元素:有子标签的元素,例如person

      <!ELEMENT 标签名称 (子标签)>
    • 简单元素:无子标签的元素,例如:nameage

      <!ELEMENT 标签名称 约束>
  2. xml中引入dtd文件
    语法:<!DOCTYPE 根标签名称 SYSTEM “dtd文件的路径”>

  1. dtd文件可以写在xml文件内部:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person [
        <!ELEMENT person (name,age)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        ]>
<person>
    <name>zhangsan</name>
    <age>18</age>
</person>
  1. xml文件中子标签顺序要严格按照dtd中规定的写。
<!ELEMENT person (name,age)> <!-- name标签在age前面 -->

3.将,改为|时,标签只能出现其中一个。

<!ELEMENT person (name|age)> <!-- person的子标签只能存在name或者age -->

二、定义标签

  1. 简单标签:<!ELEMENT name (#PCDATA)>
    • 语法:<!ELEMENT 标签名称 约束>
    • 约束,如下表格:
约束含义
(#PCDATA)<name>内容</name>,内容是字符数据
EMPTY<name></name>,不存在内容
ANY<name>内容</name>,可以存在内容
  1. 复杂标签:<!ELEMENT person (name,age)>
    如上示例,name,age标签均只能出现一次,但子表签出现次数可以设置,如下:
符号次数
?出现零次或一次(<!ELEMENT person (name?,age)>)
+出现一次或多次(<!ELEMENT person (name+,age)>)
*出现零次或多次(<!ELEMENT person (name*,age)>)

三、定义标签属性

1.语法

<!ATTLIST 标签名 属性名 属性类型 约束>

2.属性类型

属性类型含义示例
CDATA属性值为字符串<!ATTLIST name id CDATA 约束>
枚举属性值为枚举范围中的一个<!ATTLIST name id (a|b|c) 约束>
ID属性值只能是字母下划线开头<!ATTLIST name id ID 约束>

3.属性约束

属性约束含义示例
#REQUIRED必须存在属性<!ATTLIST name id 属性类型 #REQUIRED>
#IMPLIED可以存在属性<!ATTLIST name id 属性类型 #IMPLIED>
#FIXED属性值固定,无法更改<!ATTLIST name id 属性类型 #FIXED "AAA">
属性值默认属性值,如果未设置,则使用默认值<!ATTLIST name id 属性类型 "AAA">

四、实体

内部实体

  1. 语法:<!ENTITY 实体名称 "实体的值">
  2. 示例:
<!-- dtd中定义实体 -->
<!DOCTYPE person [
        <!ELEMENT person (name, age)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        <!ENTITY entity "abc">
        ]>
<!-- 在xml中引用实体 -->
<person>
    <name>&entity;</name>
    <age >18</age>
</person>

:实体写在内部dtd中,写在外部可能浏览器获取不到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值