【问题标题】:A DTD Element with EMPTY and PCDATA带有 EMPTY 和 PCDATA 的 DTD 元素
【发布时间】:2018-01-23 00:39:44
【问题描述】:

我们可以像这样在 DTD 中声明一个元素吗:

<!ELEMENT name (EMPTY | (#PCDATA))>

谢谢

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    如果您尝试声明一个为空或可能包含字符数据(文本)的元素,那么不,您不能声明这样的元素。

    参见specs中的“contentspec”:

    [46]      contentspec    ::=      'EMPTY' | 'ANY' | Mixed | children
    

    你可以像这样声明一个元素:

    <!ELEMENT name (#PCDATA|EMPTY)*>
    

    但这就是说name 包含mixed content(字符数据和子元素)。在这种情况下,可能的子元素是名为 EMPTY 的元素。

    你应该像这样声明元素:

    <!ELEMENT name (#PCDATA)>
    

    这将允许name 包含字符数据或为空。

    例如,以下name 元素都是有效的:

    <name></name>
    <name/>
    <name>balimaco00</name>
    

    【讨论】:

    • 非常感谢您的澄清
    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 2010-10-29
    • 2013-12-26
    • 2018-02-26
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多