Namespaces

hallo xmlantInnen,

wie funktioniert das eigtl., das ich zu einer namespace (zb.: xmlns:xs="http://www.w3.org/2001/XMLSchema") zugehörige elemente angebe (zb.: xs:integer) und das ganze ok ist (zb. bei einer xslt-transformation), wenn ich aber willkürlich xs:hrzlbrmft angebe, dann bekomme ich eine fehlermeldung von dem tool (xml-editor, parser etc.), das ich gerade jeweils benutze…
woher wissen die jungs (=tools) davon, was es unter einer namespace gibt und was nicht?

danke für die anwtorten!

stefan

Weil XML ein SCHEMA benutzt , in diesem SCHEMA ist angegeben wer was wie ist.
Du kannst Dein eigenes SCHEMA mit angeben oder halt ein STANDART SCHEMA benutzen.

Siehe DTD und folgende http://de.wikipedia.org/wiki/Extensible_Markup_Langu…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo rakondark,

danke für deine infos…

nur, die tatsache, dass ein schema dahinter steckt war mir schon bewusst (evtl. habe ich hier nur nicht zu ende gedacht?). so lassen sich ja zb. selbstgstrickte parser/transformer aufrufen bzw. einbinden.

nur, bei den standard schem(a[s]/en/tii :wink:…wie kommt da ein parser drauf (s. mein beispiel mit xs:integer vs. xs:hrzlbrmft für xmlns:xs="http://www.w3.org/2001/XMLSchema"), dass etwas ok ist oder nicht.
ganz naiv könnte man ja meinen, dass hier auf einen wie-auch-immer gearteten conten, der unter dieser uri zu finden ist, zugegriffen wird. dahin zielt meine frage…vermutlich ist es evtl. so, dass in o.g. beispiel die 2001-er version des zugehörigen schemas in den parser / das tool hineinkompiliert ist…

aber sicher bin ich mir nicht…who knows?

stefan

Parsen nach Standards
Hallo Stefan.

bei den standard schem(a[s]/en/tii
wie kommt da ein parser drauf für xmlns:xs="http://www.w3.org/2001/XMLSchema"), dass etwas
ok ist oder nicht.

ganz naiv könnte man ja meinen, dass hier auf einen
wie-auch-immer gearteten conten, der unter dieser uri zu
finden ist, zugegriffen wird.

Dann bräuchtest Du ja folglich immer eine Internet-Verbindung,
wenn Du den Parser nutzen willst, was in Praxis wenig Sinn macht.

vermutlich ist es evtl. so, dass die
version des zugehörigen schemas in den parser / das
tool hineinkompiliert ist…

Ja, so wird das gemacht. Die meisten Webstandards sind mit einer
eindeutigen ID versehen, hier z.B. das XML-Schema mit
http://www.w3.org/2001/XMLSchema“ und damit für alle
Parser eindeutig gekennzeichnet. Intern ordnet der Parser
jeder bekannten ID das komplette, intern gespeicherte Schema,
die DTD, das Stylesheet etc. zu und weiss damit, wie mit dem
Dokument umzugehen ist.

Als Beispiel für das Prinzip soll mal der Firefox 2.0 Webbrowser
herhalten, dessen Quellcode man unter ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releas…
herunterladen kann.

Beim Suchen nach den Dokumenttyp-Deklarationen, die einem HTML-Dokument
eine DTD zuordnen, findet sich in der Datei mozilla/parser/htmlparser/src/nsExpatDriver.cpp solche eine Zuordnungstabelle :

static const nsCatalogData kCatalogTable[] = {
 { "-//W3C//DTD XHTML 1.0 Transitional//EN", "xhtml11.dtd", nsnull },
 { "-//W3C//DTD XHTML 1.1//EN", "xhtml11.dtd", nsnull },
 { "-//W3C//DTD XHTML 1.0 Strict//EN", "xhtml11.dtd", nsnull },
 { "-//W3C//DTD XHTML 1.0 Frameset//EN", "xhtml11.dtd", nsnull },
 { "-//W3C//DTD XHTML Basic 1.0//EN", "xhtml11.dtd", nsnull },
 { "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN", "mathml.dtd", "resource://gre/res/mathml.css" },
 { "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN", "mathml.dtd", "resource://gre/res/mathml.css" },
 { "-//W3C//DTD MathML 2.0//EN", "mathml.dtd", "resource://gre/res/mathml.css" },
 { "-//WAPFORUM//DTD XHTML Mobile 1.0//EN", "xhtml11.dtd", nsnull },
 { nsnull, nsnull, nsnull }
};

Die DTDs sind im Firefox an verschiedenen Stellen zu finden, z.B. mozilla/content/xml/content/src/xhtml11.dtd.

In der Praxis validiert der Firefox allerdings die HTML bzw.
XHTML-Dokumente nicht nach der DTD, da die meisten Webseiten
im Internet sich nicht an die DTDs halten. Er parst die
HTML-Seite intern mit einem ereignisgesteuerten Parser so gut
es geht. Insofern ist das Wissen um den Aufbau von HTML-Seiten
nicht direkt über die DTD gesteuert, sondern fest im
fehlertoleranten Parser des Browsers verankert
.

Reine XML-Parser, die nach einem Standard validieren, können
dagegen streng nach DTD bzw. Schema vorgehen und haben
es dadurch einfacher.

Gruß,
-Andreas.

Danke!
Hallo Andreas,

vielen Dank für Deine Antwort, ja, wie gesagt, ich dachte mirs schon…aber anhand Deines Beispiels ists noch nachvollziehbarer :wink:

stefan