这个XML块是否有效?

时间:2012-02-01 14:05:33

标签: xml dtd xml-dtd

我的XML代码是否有效。

<?xml version="1.0"?>
<!DOCTYPE nahrung [
  <!ELEMENT nahrung      (obst|gemuese|sonstiges)+>
  <!ELEMENT obst    (#PCDATA)>
  <!ELEMENT gemuese    (#PCDATA)>
  <!ELEMENT sonstiges    (#PCDATA|beschreibung)*>
  <!ELEMENT beschreibung    EMPTY>
  <!ATTLIST beschreibung artikelname CDATA #REQUIRED
    preis CDATA #REQUIRED>
]>
<nahrung>
    <obst>Pflaume</obst>
    <gemuese>Kohl</gemuese>
    <sonstiges>Keks</sonstiges>
    <sonstiges><beschreibung preis="22.50"
         artikelname="banane"/></sonstiges>
    <gemuese>Gurke Preis: 22.50</gemuese>
</nahrung>

我有<!ELEMENT nahrung (obst|gemuese|sonstiges)+>表示障碍宝石 sonstiges 只出现xml中的一次而不是全部altogher.Did我理解正确吗?

3 个答案:

答案 0 :(得分:2)

您的XML看起来应该能够成功验证您的DTD - 但我不认为您的DTD符合您的预期。

具体来说,DTD中的这一行:

<!ELEMENT nahrung      (obst|gemuese|sonstiges)+>

表示我必须拥有该列表中的一个或多个元素。

如果你只想允许一个子元素,例如(要么 OR gemuse OR sonstiges),你可以使用它:

<!ELEMENT nahrung      (obst|gemuese|sonstiges)>

答案 1 :(得分:1)

(obst|gemuese|sonstiges)+

表示“任何非{0}},obstgemuese元素的任何非零数量。”

答案 2 :(得分:1)

(obst|gemuese|sonstiges)+表示其中一次或多次。这意味着这个xml有效。