1

我正在阅读: ttp: //emacspeak.googlecode.com/svn/trunk/html/rss-0.91.dtd

<!ELEMENT rss (channel)>
<!ATTLIST rss
version     CDATA #REQUIRED> <!-- must be "0.91"> -->
<!ELEMENT channel (title | description | link | language | item+ | rating? | image? | textinput? | copyright? | pubDate? | lastBuildDate? | docs? | managingEditor? | webMaster? | skipHours? | skipDays?)*>
<!ELEMENT title (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT link (#PCDATA)>
<!ELEMENT image (title | url | link | width? | height? | description?)*>
<!ELEMENT url (#PCDATA)>
<!ELEMENT item (title | link | description)*>
<!ELEMENT textinput (title | description | name | link)*>
<!ELEMENT name (#PCDATA)>
<!ELEMENT rating (#PCDATA)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT width (#PCDATA)>
<!ELEMENT height (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ELEMENT pubDate (#PCDATA)>
<!ELEMENT lastBuildDate (#PCDATA)>
<!ELEMENT docs (#PCDATA)>
<!ELEMENT managingEditor (#PCDATA)>
<!ELEMENT webMaster (#PCDATA)>
<!ELEMENT hour (#PCDATA)>
<!ELEMENT day (#PCDATA)>
<!ELEMENT skipHours (hour+)>
<!ELEMENT skipDays (day+)>

在第四行中,我徘徊为什么item后面跟着 a +,为什么rating后面跟着 a ??为什么需要这些递归运算符,它们在这里意味着什么?

4

4 回答 4

1

也许这可能对您有所帮助:DTD 元素

基本上:

+ 号声明子元素“消息”必须在元素内出现一次或多次。

这 ?sign 声明子元素“消息”可以在元素内出现零次或一次。

观察每个 qupte中mustcan的区别

于 2013-07-30T09:32:52.887 回答
1

(X+|Y?)*相当于(X|Y)*。您的示例 DTD 中的运算符是多余的。

于 2013-07-30T10:15:41.980 回答
0
  • +表示一个或多个
  • ?表示零或一
于 2013-07-30T09:27:56.740 回答
0

在这种情况下,没有实际区别。如果选择的元素可以出现任意次数((…|…|…)*),那么在任何成员上注释任何基数约束都是没有意义的。一个或多个事物的零次或多次轮次与零次或多次完全相同。零次或多次一轮或零次与零次或多次完全相同。

如果使用序列 ( (…,…,…)) 会有所不同。

于 2013-07-30T09:40:00.367 回答