Xml 所需的标签可以是随机顺序,只能出现一次
我想为XML文件定义DTD,如下所示:Xml 所需的标签可以是随机顺序,只能出现一次,xml,dtd,Xml,Dtd,我想为XML文件定义DTD,如下所示: <!ELEMENT item (title | link | description | author? | pubDate?)*> <!ELEMENT item (title | link | description | author? | pubDate?)> <!ELEMENT item (title, link, description, author?, pubDate?)> 项目标签包括标题标签、链接标
<!ELEMENT item (title | link | description | author? | pubDate?)*>
<!ELEMENT item (title | link | description | author? | pubDate?)>
<!ELEMENT item (title, link, description, author?, pubDate?)>
项目标签包括标题标签、链接标签和描述标签;这些标签是必需的,只能出现一次,但可以按任何顺序排列。author标记和pubDate标记是可选的
在我的DTD中,我写道:
<!ELEMENT item (title | link | description | author? | pubDate?)*>
<!ELEMENT item (title | link | description | author? | pubDate?)>
<!ELEMENT item (title, link, description, author?, pubDate?)>
我必须在标题标签、链接标签和描述标签之间进行选择
如果我这样写:
<!ELEMENT item (title | link | description | author? | pubDate?)*>
<!ELEMENT item (title | link | description | author? | pubDate?)>
<!ELEMENT item (title, link, description, author?, pubDate?)>
我必须遵守命令
那么我该如何编写DTD呢?不幸的是,没有一个好的简写法来表示元素在DTD中可以是任意顺序的,因此您必须写出标题、链接和描述的所有组合,并将它们以子序列的形式组合在由|分隔的序列中,其功能如下:
<!ELEMENT item ( (
(title,link,description)|
(link,description,title)|
(description,title,link)|
(title,description,link)|
(description,link,title)|
(link,title,description) ), author?, pubDate?)>
如果你想让author和pubDate也出现在任何地方,你必须创建这五个标记的所有可能组合 i-alarmed-alien是正确的,您需要指定所有可能的内容模型组合,但给出的示例并非如此。这意味着,如果不向前看,XML处理器就无法知道匹配的是哪个模型 下面是一个确定性示例:
<!ELEMENT item ((
(title, ((link,description)|(description,link)))|
(link, ((title,description)|(description,title)))|
(description, ((link,title)|(title,link)))
),author?,pubdate?)>
下面是另一个答案,对决定论有更好的解释: