2012-02-01 3 views
0

Является ли мой код XML действительным или нет.Является ли этот блок 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)+>, что означает OBST ИЛИ Gemüse ИЛИ Sonstiges только появляются один раз в XML и не все из них altogher.Did я правильно понимаю?

+0

Если я положил, что в новый XML-файл в eclipse, он не говорит мне никаких ошибок ... – wuppi

ответ

2

Ваш XML выглядит так, как будто он должен успешно проверять ваш DTD, но я не думаю, что ваше DTD соответствует ожидаемому.

В частности, эта линия от вашего ОТДА:

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

Означает, что я вам должно иметь один или несколько элементов из этого списка.

Если вы только хотите разрешить один дочерний элемент, например (либо заграждение ИЛИ Gemüse ИЛИ Sonstiges), вы можете использовать это:

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

Это

(obst|gemuese|sonstiges)+ 

означает "любое ненулевое число obst, gemuese и sontiges элементы, в любом порядке."

+0

Это означает, что | не означает ИЛИ? и, например, Obst может появиться дважды или gemuse один раз и sonstiges трижды? верный? – Baper

+0

Это действительно означает «или», но «+» означает «один или несколько». Таким образом, ваша полная последовательность - это одна из трех, за которой следует, возможно, любой из трех, за которым следует, возможно, любой из трех ... и т. Д. –

1

(obst|gemuese|sonstiges)+ означает любое из этих 1 или более раз. Это означает, что этот xml действителен.

Смежные вопросы