在DTD中,<! - ELEMENT通道(评级?)* - >和<! - ELEMENT通道(评级)之间有什么区别* - >

时间:2013-07-30 09:21:38

标签: xml dtd

我正在读这个: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后跟+,为什么rating后跟??为什么需要这些递归算子,它们在这里意味着什么?

4 个答案:

答案 0 :(得分:1)

也许这可能会对您有所帮助:DTD Elements

基本上:

  

+符号声明了子元素   “message”必须在元素内部出现一次或多次。

  

? sign声明了子元素   “message”可以在元素内部发生零次或一次。

观察每个qupte的必须 之间的区别

答案 1 :(得分:1)

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

答案 2 :(得分:0)

  • +表示一个或多个
  • ?表示零或一个

答案 3 :(得分:0)

在这种情况下,没有实际区别。通过选择元素,其中该选择的元素可以发生任意次数((…|…|…)*),在任何成员上注释任何基数约束都没有意义。一个或多个事物的零次或多次与零或更多完全相同。一次或零次的零次或多次与零或更多完全相同。

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