如何使 DTD 文件中的属性列表可扩展
How to make the attribute list extendable in DTD file
我想知道您是否对如何在 dtd 文件中使属性类型自由有任何想法
<!ELEMENT Attribute (#PCDATA)>
<ATTLIST name (code | permission)>
例如,如果我有多种类型的属性名称,那么我无法在 ATTLIST 声明中指定所有类型。
如何修改 ATTLIST 声明,使 xml 文件仍然有效,即使
例如,我有 DTD 中未枚举的类型
<Attribute name="code">30</Attribute>
<Attribute name="non_declared_name_type>"value"</Attribute>
提前致谢。
如果您希望 Attribute
元素上的 name
属性匹配任何 code
,或 permission
,或任何 XML 名称,则这相当于说您希望它匹配任何 XML 名称。使用 DTD 的最接近的近似值是
<!ATTLIST Attribute name NMTOKEN #REQUIRED>
此声明假设该属性是必需的。
对于这样的 'semi-closed' 值列表,其中有一些枚举值但可以接受其他值,在使用 DTD 时通常有两种方法。
(a) 可以如上所示声明它们,并确保 DTD 的用户知道枚举值,以便他们在适当的时候使用这些值,并且不要发明新的拼写这些名称的方法,通过在文档中列出枚举值 and/or 在 DTD 本身中添加注释:
<!--* Expected values include
*
* 'code' (to be used when ... or ...)
* 'permission' (to be used for ... and ...).
*
* Use other values only if necessary. *-->
<!ATTLIST Attribute name NMTOKEN #REQUIRED>
(b) 可以将属性一分为二:一个用于已知值,加上一个特殊值,如 'other',另一个用于其他值。
<!ATTLIST Attribute
name (code | permission | other) #REQUIRED
other_name NMTOKEN #IMPLIED >
这会显式地将枚举值获取到 DTD 中,并允许使用枚举的软件找到它们(例如,将它们放入用户界面的选择列表中),同时仍然允许其他值。使用未声明的值则变为
<Attribute name="other" other_name="non_declared_name_type"
>"value"</Attribute>
我想知道您是否对如何在 dtd 文件中使属性类型自由有任何想法
<!ELEMENT Attribute (#PCDATA)>
<ATTLIST name (code | permission)>
例如,如果我有多种类型的属性名称,那么我无法在 ATTLIST 声明中指定所有类型。 如何修改 ATTLIST 声明,使 xml 文件仍然有效,即使 例如,我有 DTD 中未枚举的类型
<Attribute name="code">30</Attribute>
<Attribute name="non_declared_name_type>"value"</Attribute>
提前致谢。
如果您希望 Attribute
元素上的 name
属性匹配任何 code
,或 permission
,或任何 XML 名称,则这相当于说您希望它匹配任何 XML 名称。使用 DTD 的最接近的近似值是
<!ATTLIST Attribute name NMTOKEN #REQUIRED>
此声明假设该属性是必需的。
对于这样的 'semi-closed' 值列表,其中有一些枚举值但可以接受其他值,在使用 DTD 时通常有两种方法。
(a) 可以如上所示声明它们,并确保 DTD 的用户知道枚举值,以便他们在适当的时候使用这些值,并且不要发明新的拼写这些名称的方法,通过在文档中列出枚举值 and/or 在 DTD 本身中添加注释:
<!--* Expected values include
*
* 'code' (to be used when ... or ...)
* 'permission' (to be used for ... and ...).
*
* Use other values only if necessary. *-->
<!ATTLIST Attribute name NMTOKEN #REQUIRED>
(b) 可以将属性一分为二:一个用于已知值,加上一个特殊值,如 'other',另一个用于其他值。
<!ATTLIST Attribute
name (code | permission | other) #REQUIRED
other_name NMTOKEN #IMPLIED >
这会显式地将枚举值获取到 DTD 中,并允许使用枚举的软件找到它们(例如,将它们放入用户界面的选择列表中),同时仍然允许其他值。使用未声明的值则变为
<Attribute name="other" other_name="non_declared_name_type"
>"value"</Attribute>