Hallo Thomas, :)
Ja, kann es auch (du hast selbst den Teil in der REc. verlink, wo das gesagt wird, aber das produziert nur wohlgeformte Dokumente).
Wo steht das dies wohlgeformt und mit SystemID valide ist?
Das steht niergendwo, vielleicht habe ich es misverständlich ausgedrück.
http://edition-w3c.de/TR/2000/REC-xml-20001006/#NT-doctypedecl
"Beachten Sie, dass es möglich ist, ein wohlgeformtes Dokument mit einer
doctypedecl zu schreiben, das weder auf eine externe Teilmenge verweist, nocht eine interne Teilmenge enthält."
Fragezeichen heisst einfach "optional".
Eben, das ist der Knackpunkt.
Das muss du mir aber erklären: 1,2, 3 und 4 entsprechen definitiv nicht den Regeln.
Richtig, ich wollte damit demonstrieren das man jeden Blödsinn schreiben kann und der Ausdruck IMMER wahr ist.
Das kann nicht immer "WAHR" sein, dann ist der Parser falsch programmiert.
Es ligt an mir, aber ich verstehen nicht, was du daran nicht verstehst.
*Seufz*, neuer Versuch:
"'PUBLIC' S PubidLiteral S SystemLiteral" ODER "'SYSTEM' S SystemLiteral" ist gültig, ok?!
Da aber beides optional ist (eben wegen dem ? außen herum):
('PUBLIC' S PubidLiteral S SystemLiteral ODER 'SYSTEM' S SystemLiteral)?
spielt es überhaupt keine Rolle ob einer der beiden Ausdrücke innerhalb der Klammer gültig ist; und eben das habe ich demonstriert.
Natürlich spielt es eine Rolle, dass die Ausdücke innerhalb des Klammers gültig sind oder nicht. Siehe auch Thomas ausführungen in seiner Antwort.
symbol := alternative1 | alternative2 ...
Genau, aber es lautet weiterhin (symbol)?, demnach ist egal was „symbol“ ergibt, d.h. ob alternative1 oder alternative2 überhaupt vorhanden ist, oder schlichten Blödsinn darstellen.
Nein, natürlich ist es nicht egal was symbol ergibt und es darf auch keinen Blödsinn darstellen, was sybol sein muss, wird in in den anderen Regeln definiert.
Wenn alternative1 ODER alternative2 „blabla“ lauten (s.o.) ist zwar „symbol“ ungültig aber wegen dem „?“ doch wieder gültig
Nein, ist es nicht. Ich denke du hast ein ganz anderes Verständnis von der Sache.
»»da es dann ignoriert wird (bzw. ignoriert werden muss). „fehlen“ und „falsch“ bedeutet beim „?“ das selbe und werden ignoriert (zumindest bei RegExp).
"fehlen" und "falsch" ist keineswegs dasselbe.
Das sind zwei unterschiedliche Schritte in der Prüfung.
- fehlt | vorhanden
falls vorhanden: - richtig | falsch
? = 0 oder 1
Und 0 bedeutet in diesen Fall „falsch“ oder „fehlt“ -> also immer WAHR.
Diese Erklärung ist eher was für Politiker :) "falsch" ist "falsch".
Meiner Ansicht nach fehlt ein Ausdruck nach dem Muster:
„Wenn einer der beiden Alternativen vorhanden ist, muss diese gültig sein. Sollte diese nicht gültig sein, ist (S ExternalID) FALSCH (und nicht optional, da es sonst wieder WAHR wird)“.
Aber ... Aber genau das sagen die EBNF-Regel aus! ;-)
Grüße
Thomas