xml dtd 定义元素

ANY

如果需要定义某个元素的值可以是任意类型,可采用如下语法

<!ELEMENT 元素名 ANY>

DTD必须定义XML文档中允许出现的所有元素,所以下面这样是不行的,因为<hellotag>没有在dtd中定义过

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE messages[
    <!ELEMENT messages ANY>
]>

<messages>
    <message>
        <hellotag>hello</hellotag>
    </message>
</messages>

 #PCDATA

定义元素内容为字符串,不能包含子元素

实例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE messages[
    <!ELEMENT messages (message)>
    <!ELEMENT message (content)>
    <!ELEMENT content (#PCDATA)>
]>

<messages>
    <message>
        <content>hello</content>
    </message>
</messages>

混合元素,即既可以包含字符串也可以包含子元素

格式:

(注意 1:#PCDATA只能出现在子元素的最前面

         2:*表示这些子元素可出现0次或多次,如果没有*,则各个子元素互斥,只能出现一个

         3:使用 | 分隔子元素,则子元素的出现是无序的,如果使用逗号","则子元素的出现顺序是严格按照书写顺序 )

<!ELEMENT 父元素名 (#PCDATA | 子元素1 | 子元素2 |子元素n)*>

实例:略

 

定义元素属性

格式:

<!ATTLIST 属性所属的元素 属性名 属性类型 [元素对属性的约束] [默认值]>

其中,元素对属性的约束 和 默认值 是可选的,但如果没有指定前者,则必须指定后者,

     当元素对属性的约束 是 "#REQUIRED"时,不能指定默认值,

     当元素对属性的约束 是 "#IMPLIED"时,不能指定默认值,

     当元素对属性的约束 是 "#FIXED",时,必须指定默认值

 

#REQUIRED:即必需的属性,意味着必须为该元素提供属性

#IMPLIED:意即该属性是可有可无的

#FIXED:即该属性是固定的,定义时必须指定固定值。使用该元素时无须为其分配该属性,XML处理器会自动为该属性增加固定值

 实例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE messages[
    <!ELEMENT messages (message | shortcut)*>
    <!ELEMENT message (content)>
    <!ELEMENT shortcut (#PCDATA)>
    <!ELEMENT content (#PCDATA)>
    <!ATTLIST messages hashcode CDATA #REQUIRED>
]>

<messages hashcode="dfsfdsfsdf">
    <message>
        <content>hello</content>
    </message>
    <shortcut>
        hello,world
    </shortcut>
    <shortcut>    
        hello,world
    </shortcut>
</messages>

DTD支持的属性列表:

                                                              

 

--

转载于:https://www.cnblogs.com/heben/p/6080993.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值