我的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我理解正确吗?
答案 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}},obst
和gemuese
元素的任何非零数量。”
答案 2 :(得分:1)
(obst|gemuese|sonstiges)+
表示其中一次或多次。这意味着这个xml有效。