如何在XML DTD中定义布尔类型属性?
DTD布尔属性定义及疑问解答
布尔属性的正确定义方式
你的理解完全正确,在DTD中要限制属性只能取true或false,必须使用枚举语法(true|false)来明确有效值范围。完整的写法需要包含属性的出现规则(比如必填、可选等),示例如下:
<!ATTLIST myElement someFlag (true|false) #REQUIRED >
你之前的示例里漏掉了属性出现声明(像#REQUIRED、#IMPLIED这类),这部分是DTD语法的必要组成,不能省略。
至于你问的“是不是每次需要布尔属性都得写(true|false)”——确实如此。DTD本身没有内置的布尔类型,所有需要限定取值范围的属性,都得通过枚举来定义。如果多个元素都需要布尔属性,也没法像高级语言那样定义一个可复用的“布尔类型”,只能在每个元素的ATTLIST声明里重复写(true|false)。
适合新手的DTD学习资源
不用去啃冗长的XML官方规范,推荐几个易懂的学习渠道:
- W3Schools的DTD教程:内容都是拆分后的基础知识点,讲属性、元素声明时配了大量简单示例,新手能快速掌握核心用法。
- 国内技术博客平台的XML入门文章:很多开发者会把DTD的常用语法拆解成小模块,搭配实际编写案例讲解,比官方文档更接地气。
- 入门级XML书籍:比如《XML入门经典》,其中DTD章节从基础概念到实际应用逐步推进,适合系统梳理知识点。
内容的提问来源于stack exchange,提问作者Mark VY
相关产品推荐
相关产品推荐

