Namensräume...
Stefan Hammer
- xml
Hi!
Ganz verstehe ich die Namensräume noch nicht...
Wenn man nun von Konflikten redet, frage ich mich wie das bei diesem Beispiel ist:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<buch xmlns="http://www.meinserver.de/XML/buch">
<kapitel nummer="1">
<html xmlns="http://www.w3.org/TR/REC-html-40"> <-------- hier!
<head><title>Einleitung</title></head>
<body>
<h1>Einleitung</h1>
<p>Das Buch beginnt mit diesem Text...</p>
</body>
</html>
</kapitel>
</buch>
Das erste mal wie ich das gesehen habe, habe ich gleich mal gedacht:
Ah das wird was mit den HTML-Tags zu tun haben, vl. sind die dort reserviert oder so...
Wenn das nun so stimmt (bitte mich aufklären wenn ich völlig daneben liege :P) und das aber dann viele auf der ganzen Welt machen, muss es ja Konflikte geben...oder?
Oder habe ich da was mit den Konflikten noch nicht verstanden?!
Wie ist das...? Wenn ich eben jetzt einen namespace definiere, können den andere auch irgendwie nutzen, ohne das Konflikte auftreten? Wie eben bei dieser w3.org URL oben...?
thx schon mal...
Stefan
Hallo,
Wenn man nun von Konflikten redet, frage ich mich wie das bei diesem Beispiel ist:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<buch xmlns="http://www.meinserver.de/XML/buch">
<kapitel nummer="1">
<html xmlns="http://www.w3.org/TR/REC-html-40"> <-------- hier!
<head><title>Einleitung</title></head>
<body>
<h1>Einleitung</h1>
<p>Das Buch beginnt mit diesem Text...</p>
</body>
</html>
</kapitel>
</buch>
Das ist eine XML-DAtei wo alle elemente zum Namensraum {http://www.meinserver.de/XML/buch} gehören, in diesem Beispeil ist dies der Default-Namensraum für die Elemente.
Aber beim <html>-Elemment wird ein anderer (ebenfalls) Default-Namensraum definiert, dieser gilt jedoch nur für die Elemente innerhalb von <html>.
Man hätte es auch so schreiben können:
<buch xmlns="http://www.meinserver.de/XML/buch" xmlns:html="http://www.w3.org/TR/REC-html-40">
<kapitel nummer="1">
html:html
html:headhtml:titleEinleitung</html:title></html:head>
...
</html:html>
</kapitel>
</buch>
Wenn das nun so stimmt (bitte mich aufklären wenn ich völlig daneben liege :P) und das aber dann viele auf der ganzen Welt machen, muss es ja Konflikte geben...oder?
Warum sollte es gerade hierbei konflikte geben?
Die (X)HTML-Elemente sind bekannt, ebenso der Namensraum für (X)HTML.
In anderen Fällen kann es aber Konflikte geben ;-)
Oder habe ich da was mit den Konflikten noch nicht verstanden?!
Wie ist das...? Wenn ich eben jetzt einen namespace definiere, können den andere auch irgendwie nutzen, ohne das Konflikte auftreten? Wie eben bei dieser w3.org URL oben...?
Ja, sofern du einen eindeutigen Namesraum-Namen verwendest (das ist in diesem Fall eine URI)
bei xmlns="URI" wird, wie schon gesagt, ein Default-Namensraum für die Elemente bestimmt, bei xmlns:Namesraum-Präfix="URI" kannst du einen Namensraum definieren und später durch den Präfix, Elemente aus diesem Namensraum referenzieren (wie in meinem Bsp.). D.h. der Namensraum-Präfix dient als Abkürzung für den URI.
Allerdings muss die URI überhapt nicht exsitieren, d.h. der Parser wird nciht versuchen auf die URI zuzugreifen, sie dient lediglich der eindeutigen Bestimmung des Namensraumes.
<
http://aktuell.de.selfhtml.org/artikel/xml/namensraeume/index.htm>
Grüße
Thomas
thx Thomas...
Werd mich mal ordentlich damit beschäftigen... :)