xml-namespaces
fredy
- xml
Hi!
Ich hab' da noch einige Fragen zu XML ....
1. Microsoft schreibt in seiner XML-Doku über Namespaces, die es erlauben, XML-Elemente die aus verschiedenen Quellen kommen in einem File zu vereinen und dennoch auseinander zu halten.
Sind diese Namespaces (schon) XML-Standart?
Sind sie nur in der MS-Variante von XMl von Nutzen?
2. Muß ich das XML Attribut xml:space in einer DTD extra definieren, um es verwenden zu können?
3. Von welcher Beteutung ist "Document Content Description" (DCD). Wird es DTD ablösen?; Sollte man es jetzt schon verwenden?
4. Welche Chancen gebt Ihr SMIL (bzw. HTML+TIME) ?
Danke,
fredy
Hallo fredy,
Sind diese Namespaces (schon) XML-Standart?
Na Klaro!! Nimm dir die Zeit und schau dir die W3C Seite mal gaaanz genau an. Dort gibt es alles!!
Sind sie nur in der MS-Variante von XMl von Nutzen?
In der Zeit wo ich mich mit XML beschäftigt habe, hat nur der IE 5 XML/XSL darstellen können. Ist zwar erst ein paar Monate aus, aber auf diesem Gebiet tut sich fast täglich was!! Es hat immer geheissen, dass NN6 das alles auch können wird, nun ja, NN6 ist jetzt draussen, probiers aus!!
- Muß ich das XML Attribut xml:space in einer DTD extra definieren, um es verwenden zu können?
Nein, du musst eine DTD FÜR den Namespace angeben. Du musst den Namespace oben im Dokumentenkopf deklarieren, und zwar indem du eine Referenzurl für die DTD angibst. In der DTD müssen die Elemente, die du verwenden willst definiert sein.
So definierst du einen Namespace: (Die XSL-Datei ist eigentlich auch nur ein Namespace in einer XML Datei)
<xsl:stylesheet xlmns:xsl="http://www.w3.org/TR/WD-xsl">
"xsl" ist der Name des Namespaces. Deklariert wird er durch xmlns:xsl="Refernezurl". xmlns steht natürlich für "XML-Namespace", was sonst;-)
Du musst also vor jedes xsl-Element(z.b.: value-of) den Namespacebezeichner "xsl:" davorsetzen, damit der Prozessor weiss, was er mit dem Element anfangen soll!! Wenn dein
XML ist es grundsätzlich egal, ob dein NS "xsl", "html", oder "Fritzi" heisst, solange du die Elemente mit Fritzi:Element einbindest, und die Elemente in der angegebenen DTD definiert sind.
Jetzt denkst du wahrscheinlich: Wie war das? Html-Namespace ? Ja, du kannst ganze HTML-Formatierungen einbauen, aber wie das geht sage ich dir lieber nicht, denn Formatierungselemente in der XML Datei, das ist nicht schön, die gehören ins Stylesheet. Ich weiss, dass das am Anfang irre viel Nerven kostet, aber es funktioniert!!
Noch mal zu Namespaces:
Wenn deine DTD zum Beispiel Auto heisst, und du die Elemente Name, Typ, Baujahr,... hat, kannst du in deinem XML File für deine Haushaltsverwaltung, oder wo auch immer, () mit
Auto:NameFord Mustang</Auto:Name>
Auto:Baujahr1979</Auto:Baujahr>
diesen Namespace einbinden.
- Von welcher Beteutung ist "Document Content Description" (DCD). Wird es DTD ablösen?; Sollte man es jetzt schon verwenden?
nie gehört
- Welche Chancen gebt Ihr SMIL (bzw. HTML+TIME) ?
Jetzt, wo es Flash gibt? - aber festlegen will ich mich da nicht!
Man muss einmal das Konzept dahinter (xsl,dtd und wie die alle mit xml zusammenhängen) kapiert haben, dann ist xml gleich viel viel leichter, als es am Anfang aussieht:)
Das Grübeln kann und will ich dir aber nicht abnehmen, bin ja selbst kein Profi!! -Allerdings kenn ich auch keinen Profi, man hört überall XML XML und nochmal XML, aber auskennen tut sich anscheinend niemand.
Vielleicht ist in diesem Forum ja irgend jemand, der sich da wirklich auskennt, oder wir tun uns irgendwie zusammen, und bringen uns das selbst im Teamwork bei, interessant wärs ja ...
Grüsse Bernhard
Hi!
ok - soweit so gut, aber:
Wie kann ich verschiedene Namespaces mit verschiedenen DTD nutzen.
zB
Besitzer:NameFord Mustang</Besitzer:Name>
Auto:NameFord Mustang</Auto:Name>
Auto:Baujahr1979</Auto:Baujahr>
Alle Auto-Tags sollen sich auf eine auto.dtd und alle besitzer-tags sollen sich auf eine besitzer.dtd beziehen.
Geht das mit DTD überhaupt, oder geht das nur mit schemas?
Grüße und Danke,
fredy
Hallo fredy,
Sind diese Namespaces (schon) XML-Standart?
Na Klaro!! Nimm dir die Zeit und schau dir die W3C Seite mal gaaanz genau an. Dort gibt es alles!!Sind sie nur in der MS-Variante von XMl von Nutzen?
In der Zeit wo ich mich mit XML beschäftigt habe, hat nur der IE 5 XML/XSL darstellen können. Ist zwar erst ein paar Monate aus, aber auf diesem Gebiet tut sich fast täglich was!! Es hat immer geheissen, dass NN6 das alles auch können wird, nun ja, NN6 ist jetzt draussen, probiers aus!!
- Muß ich das XML Attribut xml:space in einer DTD extra definieren, um es verwenden zu können?
Nein, du musst eine DTD FÜR den Namespace angeben. Du musst den Namespace oben im Dokumentenkopf deklarieren, und zwar indem du eine Referenzurl für die DTD angibst. In der DTD müssen die Elemente, die du verwenden willst definiert sein.
So definierst du einen Namespace: (Die XSL-Datei ist eigentlich auch nur ein Namespace in einer XML Datei)
<xsl:stylesheet xlmns:xsl="http://www.w3.org/TR/WD-xsl">"xsl" ist der Name des Namespaces. Deklariert wird er durch xmlns:xsl="Refernezurl". xmlns steht natürlich für "XML-Namespace", was sonst;-)
Du musst also vor jedes xsl-Element(z.b.: value-of) den Namespacebezeichner "xsl:" davorsetzen, damit der Prozessor weiss, was er mit dem Element anfangen soll!! Wenn dein
XML ist es grundsätzlich egal, ob dein NS "xsl", "html", oder "Fritzi" heisst, solange du die Elemente mit Fritzi:Element einbindest, und die Elemente in der angegebenen DTD definiert sind.
Jetzt denkst du wahrscheinlich: Wie war das? Html-Namespace ? Ja, du kannst ganze HTML-Formatierungen einbauen, aber wie das geht sage ich dir lieber nicht, denn Formatierungselemente in der XML Datei, das ist nicht schön, die gehören ins Stylesheet. Ich weiss, dass das am Anfang irre viel Nerven kostet, aber es funktioniert!!
Noch mal zu Namespaces:
Wenn deine DTD zum Beispiel Auto heisst, und du die Elemente Name, Typ, Baujahr,... hat, kannst du in deinem XML File für deine Haushaltsverwaltung, oder wo auch immer, () mit
Auto:NameFord Mustang</Auto:Name>
Auto:Baujahr1979</Auto:Baujahr>diesen Namespace einbinden.
- Von welcher Beteutung ist "Document Content Description" (DCD). Wird es DTD ablösen?; Sollte man es jetzt schon verwenden?
nie gehört
- Welche Chancen gebt Ihr SMIL (bzw. HTML+TIME) ?
Jetzt, wo es Flash gibt? - aber festlegen will ich mich da nicht!Man muss einmal das Konzept dahinter (xsl,dtd und wie die alle mit xml zusammenhängen) kapiert haben, dann ist xml gleich viel viel leichter, als es am Anfang aussieht:)
Das Grübeln kann und will ich dir aber nicht abnehmen, bin ja selbst kein Profi!! -Allerdings kenn ich auch keinen Profi, man hört überall XML XML und nochmal XML, aber auskennen tut sich anscheinend niemand.
Vielleicht ist in diesem Forum ja irgend jemand, der sich da wirklich auskennt, oder wir tun uns irgendwie zusammen, und bringen uns das selbst im Teamwork bei, interessant wärs ja ...Grüsse Bernhard
Hallo fredy
Alle Auto-Tags sollen sich auf eine auto.dtd und alle besitzer-tags sollen sich auf eine besitzer.dtd beziehen.
Das heisst im Klartext, in der DTD Besitzer sollte es ein Element Auto geben, und mit der DTD Auto sollte man das Vehikel etwas näher beschreiben können, ungefähr so: ?
Besitzer:AutoFord Mustang</Besitzer:Auto>
Besitzer:NameHans Beppi Gummischaas</Besitzer:Name>
Auto:NameFord Mustang</Auto:Name>
Auto:Baujahr1979</Auto:Baujahr>
Wenn ja, dann müsste das so eigentlich funktionieren. Ich bin immer mit einer DTD ausgekommen. Wozu brauchst du eigentlich 2 DTDs ?
Wenn du ihn nicht kennst, schau dir mal diesen Link an. Vielleicht kann dir der etwas weiterhelfen:
http://irb-www.informatik.uni-dortmund.de/~sm/aw/xml/msie/kap8.html#8
Schöne Grüsse
Bernhard
Hallo!
Sind diese Namespaces (schon) XML-Standart?
Ja. Sogar Reccomendation ist es http://www.w3.org/TR/1999/REC-xml-names-19990114/ und schon ist gut! ;-)
Sind sie nur in der MS-Variante von XMl von Nutzen?
Nein.
Bernhard hat schon schön erkläert warum man Namensräume braucht.
Nur eine kleine Ergänzung dazu:
Du hast folgendes in einer XML:
<BOOK>
<TITLE>Tagebuch eines XML-Lerlings</TITLE>
<PRICE currency="DM">22.95</PRICE>
</BOOK>
Dann geht es weiter:
<AUTHOR>
<TITLE>Hr.</TITLE>
<NAME>Peter Mustermann</NAME>
</AUTHOR>
Nun ja, du kannst unterscheiden zwischen den 2 <TITLE> Elements, aber ein Programm nicht. Deshalb ist es notwendig genau zu sein was gemeint ist, also schreibst du:
BookInfo:TITLETagebuch eines XML-Lerlings</BookInfo:TITLE>
AuthorInfo:TITLEHr.</AuthorInfo:TITLE>
- Muß ich das XML Attribut xml:space in einer DTD extra definieren, um es verwenden zu können?
xml:space ist kein Attribut:
<BOOK xmlns="urn:BookReader.org:BookInfo">
<TITLE>Tagebuch eines XML-Lerlings</TITLE>
<PRICE currency="US Dollar">22.95</PRICE>
</BOOK>
Hier erklärst du das BOOK Element und alle seine Attribute. Der namespace ist 'urn:BookReader.org:BookInfo', xmlns ist ein Schlüsselwort wodurch Parser die namespace Deklaration erkennen.
Anders geht esauch:
<x xmlns:edi='http://ecommerce.org/schema'></x>
"edi" ist der Prefix, das an 'http://ecommerce.org/schema' verknüpft ist und bestimmt wurde das ganze hier für das "x" Element
Grüße
Thomas