【问题标题】:DTD's Mixed content modelDTD 的混合内容模型
【发布时间】:2016-12-14 00:32:13
【问题描述】:

说我有这样的东西

       <offor>Ubuntu Juju is all that you need 
      <charm Id="lisp" \>.</offor><offor>This one is the name thing</offor>

这是我的 DTD

       <!ELEMENT offor (#PCDATA, charm?) >
      <!ELEMENT charm EMPTY>
      <!ATTLIST id ID #REQUIRED>

有人可以帮我吗?我的 DTD 不工作

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    您的 XML 和 DTD 都存在一些问题:

    1. 您没有根元素。我在下面的示例中添加了&lt;doc&gt;

    2. 您在关闭charm 时使用了反斜杠 (\) 而不是正斜杠 (/)。

    3. 当您有mixed content 时,您不能指定#PCDATA 和使用, 的子元素的顺序。您必须使用|(或)和星号(*)。

    4. 在您的 ATTLIST 声明中,您忘记添加声明属性的元素的名称。

    5. XML 中的Id 属性与DTD 中属性名称id 的大小写不匹配。

    这是一个更新的 XML 和 DTD 的示例。 DTD 位于内部子集中,但如果用作外部 DTD 也同样有效。

    <!DOCTYPE doc [
    <!ELEMENT doc (offor+)>
    <!ELEMENT offor (#PCDATA|charm)* >
    <!ELEMENT charm EMPTY>
    <!ATTLIST charm 
              id ID #REQUIRED>
    ]>
    <doc>
      <offor>Ubuntu Juju is all that you need 
        <charm id="lisp"/>.</offor><offor>This one is the name thing</offor>
    </doc>
    

    【讨论】:

    • 优秀的答案。我不知道您不能指定混合内容的顺序。很好的解释。
    猜你喜欢
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2018-04-11
    • 1970-01-01
    相关资源
    最近更新 更多