HM: Grundkonzepte
Transcrição
HM: Grundkonzepte
Problemstellung … Phänomen o o Kodierung strukturierter Dokumente im Web — XML Namespaces — Kombination verschiedener Vokabularien für Elemente und Attribute in einer XML-Anwendung / einem XML-Dokument Anwendung verschiedener Software-Komponenten auf unterschiedliche Teile eines XML-Dokuments Problem o o Identifizierung Namenskonflikte (identische Namen, verschiedene Semantik) Ziel: Friedliche Koexistenz verschiedener Vokabularien Lösung auf DTD-Ebene? ― Problematisch! Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 1 … Problemstellung … 8.November 2006 ― 2 … Problemstellung o o XML-Dateninseln in HTML-Code (Microsoft) XForms-Formular-Elemente in HTML-Code o XSLT: Kodierung von speziellen Programmanweisungen und allgemeinen Ergebnisfragmenten in einem XML-Dokument o Elektronisches Publizieren: XML Namespaces (..\..\XFormsBeispiele\elementary.htm) <template match="book"> <title><value-of select="bookTitle"/></title> <copyRight>2003</copyRight> </template> <Katalog AutorIn="ABK"> <Titel>Neuanschaffungen Mai 2000</Titel> <Buch> <Titel>Green Eggs and Ham</Titel> <AutorIn><Titel>Dr.</Titel><NName>Seuss</NName></AutorIn> </Buch> </Katalog> XLink: Kodierung von Hypertext-Vernetzung über spezielle XLink-Attribute in XML-Dokumenten <song type="simple" href="targetURI"> Der Herbst, der Herbst, der Herbst ist da. </song> Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 3 Elektronisches Publizieren: XML Namespaces Funktion von Namensräumen Namensräume in XML o o o Festlegung, von welcher Art ein benanntes Objekt ist Angesichts der Mehrdeutigkeit von Namen (Maria = Mensch; Urania = Mensch | Planet; Hektor = Mensch | Katze) o o Namensraum umfasst Klasse von Objekten, innerhalb derer Namen eindeutig sind Aufgabe: Erkennung des Namensraums zu einem Namen Mittel o In XML Namespaces o o Syntax, Verwendungskontext explizite Markierung o o offener Namensraum (vgl. paket-interne Namen in Java) Namensraum nur über Namen identifiziert Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 5 o o 8.November 2006 ― 4 Je eigene Namensräume für Elemente, XML-Entitäten, Fremddaten-Entitäten, Attributwerte, Notationen pro Dokument / Dokumentenklasse (Gültigkeitsbereich) o Zuordnung zu Namensraum über Syntax Eigener Namensraum für Attribute pro Element (Gültigkeitsbereich) o Zuordnung zu Namensraum über Syntax Je eigene universelle Namensräume für Datentypen und Prozessanweisungen o Zuordnung zu Namensraum über Syntax / Deklaration o Vereinbarung der Semantik außerhalb von XML Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 6 1 Namensräume in Java … … Namensräume in Java o o o Je eigene Namensräume für Methoden und Attribute pro Klasse / Interface (Gültigkeitsbereich) o Zuordnung zu Namensraum über Syntax o Vererben, Überladen, Überschreiben, Verschatten Dynamischer Namensraum für formale Parameter / Variablen pro Methode / Block (Gültigkeitsbereich) o Zuordnung zu Namensraum über Syntax und Ausführungskontext o Verschatten Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 7 o Eigener Namensraum für Klassen / Interfaces pro Paket (Gültigkeitsbereich) o Zuordnung zu Namensraum über Anweisung package und Qualifizierung über Paketnamen o Kurzformen über Import-Mechanismus Universeller Namensraum für Pakete o Eindeutigkeit von Namen über strukturierte Namen in Anlehnung an Internet Domains o Auflösung des Namens (Identifizieren des benannten Ordners) über package-Deklarationen und classpath-Setzungen Elektronisches Publizieren: XML Namespaces Funktion von Namen Funktionalität von XML Namespaces … o o o Software o Referenz auf Software-Konstrukte (Speicherbereiche, Codesegmente) o Transparenz der Namen (außerhalb von Schnittstellen): Information Hiding Strukturierte Dokumente / XML o Benennung von Dokumentenkonstrukten (Elemente, Attribute, Entitäten) o Referenz auf Definitionen dieser Konstrukte (DTDs) o keine Transparenz der Namen, Veräußerung der Namen Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 9 o o o o Benennung von Namensräumen für Elemente und Attribute mit URIs (vergleichbar mit Paketnamen in Java) Markierung von Elementnamen mit Namensraumnamen Z Differenzierung Unmarkierte Attributnamen weiterhin elementspezifisch Markierung von Attributnamen mit Namensraumnamen Z Neu: Globale, elementunabhängige Attribute (XLink-Attribute, prinzipiell auch title, lang, src in HTML) Freie Zuordbarkeit von Elementen / Attributen über Markierung mit Namensraumnamen (keine formale Definitionsgewalt über Namensräume, Interoperabilität durch Vereinbarung / Werkzeugunterstützung) Elektronisches Publizieren: XML Namespaces … Funktionalität von XML Namespaces … … Funktionalität von XML Namespaces o o o Implizite Struktur eines Namensraums o globale Elemente: Zuordnung zum Namensraum über Markierung mit Namensraumnamen o globale Attribute: Zuordnung zum Namensraum über Markierung mit Namensraumnamen o lokale Attribute für jedes globale Element im Namensraum: Attribute des Elements ohne Markierung mit Namensraumnamen Anonymer, universeller Namensraum für Elemente ohne explizite Namensraumzuordnung Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 11 o 8.November 2006 ― 8 8.November 2006 ― 10 Namenraum für Kataloge: http://www.catalogues.com Namensraum für Bücher: http://www.books.com Namensraum für Personennamen: http://www.names.com <Katalog AutorIn="ABK"> <Titel>Neuanschaffungen Mai 2000</Titel> <Buch> <Titel>Green Eggs and Ham</Titel> <AutorIn> <Titel>Dr.</Titel><NName>Seuss</NName> </AutorIn> </Buch> </Katalog> Umsetzung in W3C-Empfehlung „Namespaces in XML 1.1“ (REC-xml-names11-20040204), vor allem Kodierung Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 12 2 Kodierung … … Kodierung … o o Markierung von Element- und Attributnamen mit Namensraumnamen (URIs) indirekt über Präfixe, an die über Deklarationen URIs gebunden werden <cat:Katalog cat:AutorIn=´ABK´ xmlns:cat=´http://www.catalogues.com´ xmlns:bk=´http://www.books.com´ xmlns:nm=´http://www.names.com´> <cat:Titel>Neuanschaffungen Mai 2000</cat:Titel> <bk:Buch> <bk:Titel>Green Eggs and Ham</bk:Titel> <bk:AutorIn> <nm:Titel>Dr.</nm:Titel><nm:NName>Seuss</nm:NName> </bk:AutorIn> </bk:Buch> </cat:Katalog> Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 13 o Gültigkeitsbereich der Präfixdefinition o innerhalb des Elements, in dem das Präfix definiert ist, einschließlich des Elements selbst o Überschreiben der Definition innerhalb der Elementhierarchie möglich Binden des leeren Präfixes an Namensraumnamen (URI) möglich (Defaultnamensraum) o mittels des Attributs xmlns (ohne Doppelpunkt) o Überschreiben der Definition innerhalb der Elementhierarchie möglich o Rücksetzen auf anonymen, universellen Namensraum durch Definition xmlns="" Elektronisches Publizieren: XML Namespaces … Kodierung Cross Check o o o o Präfixe, die mit x,m,l in beliebiger Groß- oder Kleinschreibung beginnen, sind reserviert Das Präfix xmlns für Attribute zur Definition von Namensraumpräfixen darf nicht definiert werden; es ist gebunden an http://www.w3.org/2000/xmlns/ Das Präfix xml darf definiert werden, aber nur mit vorgegebenem Wert http://www.w3.org/XML/1998/namespace o o o o o Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 15 Vererbung der Präfixdefinition, nicht der Namensraumzuordnung Begriffe: Namensraumpräfix, Namensraumname (URI), qualifizierter (raw), lokaler, expandierter Name Verschiedene Präfixe können an denselben Namensraumnamen (URI) gebunden werden Z Gleichheit der Element- bzw. Attributnamen Es ist nicht möglich, ein Attribut ohne Präfix dem Defaultnamensraum als globales Attribut zuzuweisen Der anonyme Namensraum hat keine globalen Attribute Mit minimalem Aufwand ein ganzes XML-Dokument einem Namensraum zuordnen Elektronisches Publizieren: XML Namespaces Zusammenfassung … … Zusammenfassung … o o o o o Namespaces werden über URIs identifiziert (Namespace Name) [ + ein universeller anonymer NS ] Jeder Element- oder Attributname in XML ist einem Namespace zugeordnet Die Zuordnung erfolgt über ein Präfix, das mit Hilfe eines xmlns-Attributs an eine URI gebunden ist; es ist möglich, das leere Präfix an eine URI zu binden (Definition eines Default-Namensraum) Die Bindung von Präfix an URI ist gültig für das Element, in dem sie getroffen wurde, und für alle untergeordneten Elemente, bis eine Umdefinition des Präfixes erfolgt Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 17 o o 8.November 2006 ― 14 8.November 2006 ― 16 Elementnamen mit Präfix (qualifizierter Name) gehören zu dem Namensraum, den das Präfix definiert Elementnamen ohne Präfix, für die die Deklaration eines Default-Namensraum gültig ist, gehören zu dem dort als Default deklarierten Namensraum Elementnamen ohne Präfix, für die keine Deklaration eines Default-Namensraums gültig ist, gehören zu dem universellen, anonymen Namensraum Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 18 3 … Zusammenfassung Konformität XML Namespaces … o Nachrangigkeit von XML-Namespaces gegenüber XML o Namespaces-konforme Dokumente müssen XML-konform sein o Validität: Ein Namespaces-konformes Dokument ist valide, wenn es als XML-Dokument valide ist. o erst XML-Prozessor, dann Namespaces-Prozessor o validierender XML-Prozessor interpretiert nicht die Indirektion von Namespace-Präfixen o o Attributnamen mit Präfix (qualifizierter Name) gehören als globale Attribute zu dem Namensraum, den das Präfix definiert Attributnamen ohne Präfix gehören als lokale Attribute zu dem Namensraum des Elements, bei dem sie definiert sind. Keine weitere Semantik, welche Namen in einem durch einen Namensraum-Namen gekennzeichneten Namensraum enthalten sind Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 19 Elektronisches Publizieren: XML Namespaces … Konformität XML Namespaces … … Konformität XML Namespaces Syntax von XML Namespaces o Namen von Elementen und Attributen in Namespaceskonformen XML-Dokumenten dürfen höchstens einen Doppelpunkt enthalten. Der Teil vor dem Doppelpunkt (falls existent) ist das Präfix. Präfixe müssen in einem übergeordneten oder in demselben Element deklariert sein o Alle anderen Namen (z.B. ID-Werte) dürfen keinen Doppelpunkt enthalten o Anwendungen wie XSLT und XML Schema nutzen Namensraum-Markierungen auch in Attributwerten, entgegen der ursprünglichen Intention Z Nachhalten von Präfix-URI-Bindungen im Datenmodell o Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 21 o o Ergebnis der Bearbeitung eines XML-Dokuments mit einem Namespaces-Prozessor: Annotation der Elemente und Attribute mit dem Namensraumnamen o nicht standardisiert o nicht in XML ausdrückbar Gleichheit von Namen vor und nach Bearbeitung durch Namespaces-Prozessor unterschiedlich Namespace-Prozessoren integriert mit XML-Parsern, Veräußerung von Namespace-Information über XML-APIs Elektronisches Publizieren: XML Namespaces Namespaces und DTDs Bewertung XML Namespaces Techniken zum Umgang mit Namespaces in DTDs o Deklaration von Default-Namensraum als fixes Attribut (geeignet für Dateninseln) <!ATTLIST math xmlns CDATA #FIXED "…"> Verwendung <math>…</math> (Beispiel) o Referenzen in DTD (von außen überschreibbar) <!ENTITY % dc-prefix "dc"> <!ENTITY % dc-colon ":"> <!ENTITY % dc-title "%dc-prefix;%dc-colon;title"> <!ELEMENT %dc-title; (#PCDATA)> o Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 23 o o 8.November 2006 ― 20 8.November 2006 ― 22 Namespaces haben sich für gemischte Vokabularien durchgesetzt (Beispiele XSLT, XLink, XML Schema) Namespaces und DTDs sind nicht kompatibel Bessere Kompatibilität von Namespaces und Strukturvorgaben mit XML Schema oder Relax NG Elektronisches Publizieren: XML Namespaces 8.November 2006 ― 24 4