【问题标题】:Element Declaration: Defining content as #PCDATA and one occurence of child element元素声明:将内容定义为#PCDATA 并出现一次子元素
【发布时间】:2010-11-17 16:11:52
【问题描述】:

在 xml 规范中,它说:

[定义:当元素类型的元素可能包含字符数据时,该元素类型具有混合内容,可选地穿插子元素。] 在这种情况下,子元素的类型可能受到限制,但它们的顺序或数量不受限制发生次数

有没有办法解决这个问题,使这个 xml 有效:

<parent>
   A text node
   <child/>
</parent>

但是这个 xml 无效:

<parent>
   A text node
   <child/>
   <child/>
</parent>

另外,您知道为什么不允许这样做吗?

<!ELEMENT parent (#PCDATA,child)>

【问题讨论】:

    标签: xml dtd pcdata


    【解决方案1】:

    阿尔德拉斯,

    前面,我不知道,但我不这么认为,不是在 DTD 中......而且,如果我可以这样说,你真的应该使用 XML Schema(即 XSD)而不是 DTD(他们就是 90 后;-)。

    XSD 允许您更严格地控​​制文档内容,而且我很确定使用 XSD 可以(甚至很容易)限制“混合类型”复杂元素中特定子元素的出现次数;虽然我自己从来不需要(碰木头)这样做......所以把这当作异端。

    祝你好运。

    干杯。基思。

    【讨论】:

    • 我无法决定使用哪种模式语言。我正在处理其语法由我无法控制的 DTD 定义的 xml 文件。之所以问这个问题,只是为了在我的xml处理代码上测试各种情况,临时修改了dtd的本地副本时遇到了这个问题。
    【解决方案2】:

    DEFINE: (a,b,c) 是表示sequenced list 的允许子元素的方式。你不应该排序文本内容和一些元素。

    解决:如果您希望该文本位于某些子元素中的任何确切位置,请将其包装在一个新的特定子元素中,并 sequence 该特定元素在其他子元素中。

    记住:A = 任何;允许文本内容(= PCDATA = 从 DTD 的角度来看未标记的字符串)必然允许任何文本内容。

    我相信我是对的。 .干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多