DTD的混合内容模型
问题描述:
说我有这样的事情DTD的混合内容模型
<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中:
你没有根元素。我在下面的示例中添加了
<doc>
。当您关闭
charm
时,您使用了反斜杠(\
)而不是正斜杠(/
)。如果您有mixed content,则无法指定
#PCDATA
的顺序以及使用,
的子元素。您必须使用|
(或)和星号(*
)。在您的
ATTLIST
声明中,您忘记添加声明属性的元素名称。XML中的
Id
属性与DTD中属性名称id
的大小写不匹配。
下面是更新的XML和DTD的示例。 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>
优秀的答案。我不知道你无法指定混合内容的顺序。伟大的解释。 – Spredzy