我正在尝试制作一个DTD,其中我想添加一些限制,例如:
但我不知道如何做到这一点。 (我知道使用XML Schema添加这些限制更容易,但我想用DTD来实现它。)
答案 0 :(得分:2)
DTD无法将数据限制为数字类型 ,更不用说限制位数了:
元素:DTD将元素的content spec定义为
[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
通过Mixed
我们可以声明#PCDATA(解析后的字符数据)但是
没有进一步的数据类型规范。通过children
我们可以
递归地声明子元素。
没有任何元素类型可能为规范提供数字类型或长度。
属性:DTD将 attribute type 定义为字符串,一组标记化类型或枚举类型:
[54] AttType ::= StringType | TokenizedType | EnumeratedType
TokenizedType
可以是ID
,IDREF
,IDREFS
,ENTITY
,ENTITIES
,NMTOKEN
或{中的一个} {1}}; NMTOKENS
可以是符号或枚举。
所有属性类型都不能为规范提供数字类型或长度。
总体而言,不支持元素或属性的数字类型。 1 改为使用XSD。
1 如果您处于需要扩展DTD以表达更广泛数据类型(例如XSD中的数据类型)的特殊情况,请参阅Datatypes for DTDs (DT4DTD) 1.0。但是,不要指望现有的验证解析器强制执行此类规范,这些规范更多地为提供更顺畅的未来转换路径到XML Schema的基础。