【问题标题】:In XML DTD, how can an attribute have two values?在 XML DTD 中,一个属性如何有两个值?
【发布时间】:2015-05-26 09:24:19
【问题描述】:

试图实现这样的目标

ATTLIST employee role (leader|analyst|leader,analyst)

我不能把它变成一个元素;它必须是一个属性。

DTD 似乎不喜欢在其表达式中使用逗号。

【问题讨论】:

  • 使用空格而不是逗号。这就是 html 类属性的工作原理。虽然从技术上讲,它只是简单地定义为一个字符串,而不是在 xhtml DTD 中具有任何结构

标签: xml dtd


【解决方案1】:

XML 中的属性不能包含元素。

尝试以任何方式将结构添加到属性中,您确实违反了常规。如果必须这样做,请保持简单:您可以通过空格或逗号分隔值表示列表。再进一步,需要一个与 XML 解析器不同的单独的微解析器来解析属性值。这不是一个好主意,不要指望 DTD 提供超出 NMTOKENSIDREFSENTITIES 提供的支持

另请参阅:XML Element vs XML Attribute

【讨论】:

  • 如果您使用 XML Schema 来描述文档,那么您可以使用 list 类型。
【解决方案2】:

你可以这样做:

<!ATTLIST employee role (leader|analyst|leader) "analyst">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多