webentwicklung-frage-antwort-db.com.de

Was ist der Unterschied zwischen targetNamespace und xmlns: target?

Was ist die Funktion von targetNamespace?

<schema xmlns="http://www.w3.org/2001/SchemaXML"
        targetNamespace="http://www.example.com/name"
        xmlns:target="http://www.example.com/name">

Ich verstehe, dass xmlns="http://www.w3.org/2001/SchemaXML Den Schema-XML-Namespace definiert.

Ich verstehe auch, dass xmlns:target="http://www.example.com/name" Den Namespace für mein eigenes Vokabular definiert, wenn ich mein eigenes Schema mit dem Präfix "target" erstelle. Dies fungiert als Proxy oder Platzhalter für den URI http://www.example.com/name.

Dies scheint ausreichend zu sein, um die erforderlichen Grenzen und Vokabeln der Namespace-Teilnehmer zu definieren. Warum brauche ich dann ein targetNamespace-Attribut, das den Namespace http://www.example.com/name Dupliziert?

39
jojo10

Hier ganz gut geantwortet: targetNamespace und xmlns ohne Präfix, was ist der Unterschied?

Um es noch einmal zu sagen:

  • targetNamespace="" - Da das aktuelle XML-Dokument ein Schema ist, definiert dieses Attribut den Namespace, auf den dieses Schema abzielen oder validieren soll.

  • xmlns="" - Definiert den Standardnamespace innerhalb des aktuellen Dokuments für alle nicht vorangestellten Elemente (d. H. No yada: im <yada:elementName>)

  • xmlns:target="" - hier definieren Sie nur Ihren eigenen Namensraum mit dem Präfix target:, dies hat nichts mit den beiden vorherigen Sonderfällen zu tun.

44
Shaun

Der targetNamespace deklariert einen Namespace für andere xml- und xsd-Dokumente, der auf dieses Schema verweist. Das Zielpräfix bezieht sich in diesem Fall auf denselben Namespace, und Sie würden es in dieser Schemadefinition verwenden, um auf andere Elemente, Attribute, Typen usw. zu verweisen, die ebenfalls in derselben Schemadefinition definiert sind.

6
s_t_e_v_e

Das Präfix "Ziel" in xmlns:target="http://www.example.com/name" ist nichts besonderes. Woher weiß ein Schema-Prozessor, dass dies der Ziel-Namespace für Ihr Schema sein soll? targetNamespace macht genau das - es deklariert den Namespace, zu dem die Komponenten Ihres Schemas gehören.

N.B. Nicht alles im Schemadokument wird in den targetNamespace geschrieben. Beachten Sie die Attribute "elementFormDefault" und "attributeFormDefault" für das Element "schema" und das Attribut "form" für die Elemente "element" und "attribute".

2
Kevin