gpt4 book ai didi

java - 如何使 DTD 文件中的属性列表可扩展

转载 作者:行者123 更新时间:2023-12-01 09:48:51 25 4
gpt4 key购买 nike

我想知道您是否对如何在 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 属性与任何 codepermission 相匹配,或任何 XML 名称,那么这相当于说您希望它与任何 XML 名称匹配。使用 DTD 最接近的近似值是

<!ATTLIST Attribute name NMTOKEN #REQUIRED>

此声明假定该属性是必需的。

对于这种具有一些枚举值但可以接受其他值的“半封闭”值列表,使用 DTD 时通常有两种方法。

(a) 可以如上所示声明它们,并确保 DTD 的用户了解枚举值,以便他们在适当的时候使用这些值,并且不会发明拼写这些名称的新方法,方法是在文档中列出枚举值和/或在 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) 可以将属性一分为二:一个用于已知值,加上“其他”等特殊值,另一个用于其他值。

<!ATTLIST Attribute 
name (code | permission | other) #REQUIRED
other_name NMTOKEN #IMPLIED >

这会将枚举值明确地放入 DTD 中,并允许使用枚举的软件来查找它们(例如,将它们放入用户界面的选择列表中),同时仍然允许其他值。未声明值的使用就变成了

<Attribute name="other" other_name="non_declared_name_type"
>"value"</Attribute>

关于java - 如何使 DTD 文件中的属性列表可扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37749535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com