2016-04-12 3 views
0

zu verwenden, habe viele Plätze für Namensräume gesucht habe, aber doesnot befriedigende Antwort erhältwie XSD-Namespace

für die folgende XSD-Datei

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="http://www.example.org/schema" 
      xmlns="http://www.w3.org/2001/XMLSchema" 
      elementFormDefault="qualified"> 

      <xs:element name="product"/> 

</xs:schema> 

für den obigen Code, folgende ist mein Verständnis. Bitte korrigieren Sie mich, wenn ich falsch liege. Ich habe auch einige Fragen bezüglich der gleichen:

  1. xmlns:xs="http://www.w3.org/2001/XMLSchema" ist der Ort, wo defination aller Elemente gespeichert und Datentypen ich in meinem aktuellen Dokument verwenden.

  2. targetNamespace="http://www.example.org/schema ist eigentlich der Name des Pakets, in dem die aktuelle Datei gespeichert wird.

  3. xmlns="http://www.w3.org/2001/XMLSchema": keine Ahnung, was das ist

  4. ** xmlns:tns** als Target gleich ist. Warum benutzen wir es dann einzeln?

  5. , was die Verwendung von ersten und dritten Zeile ist

+0

Probieren Sie die W3Schools Tutorials. Dies ist nicht der Ort, um sich mit Grundlagen wie XML-Namespaces vertraut zu machen. – kimbert

Antwort

2

Zum einen die beiden Erklärungen:

xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns="http://www.w3.org/2001/XMLSchema" 

zeigen, dass beide Namen „xs“ vorangestellt, und ohne Präfix Namen repräsentieren Namen, deren Bedeutung ist in der W3C XSD-Spezifikation definiert. Dies gibt Ihnen die Wahl <xs:element> oder einfach <element> zu schreiben. Es gibt keinen besonderen Grund, beides zu erklären; Es ist besser, die eine oder die andere Form konsistent zu verwenden. Das Attribut targetNamespace="http://www.example.org/schema" zeigt an, dass dieses Schema die Struktur von Elementen (und möglicherweise Attributen) im Namespace http://www.example.org/schema definiert. Dies ist vermutlich ein Namespace, für den Sie die Entwurfskontrolle sind (womit ich meine, Sie sollten es nicht sein) Verwenden Sie diesen bestimmten Namespace außer in einem Beispiel, weil es nicht Ihr Namespace ist).

Es ist durchaus üblich, eine Erklärung wie

xmlns:tns="http://www.example.org/schema" 

zu sehen, die einen Präfix (in diesem Fall „tns“) an dem Ziel-Namensraum des Schemas bindet. Wenn Sie eine Schema-Komponente haben, die ein anderes in dem gleichen Ziel-Namensraum verweist (zum Beispiel einer Elementdeklaration eine Art Referenzierung), dann gibt es zwei Möglichkeiten, es zu tun:

(1) <xs:element name="e" type="t"/> 

Dies funktioniert, wenn die „xs“ prefix ist an "http://www.w3.org/2001/XMLSchema" gebunden und der Standard-Namespace ist derselbe wie der Ziel-Namespace. Diese

(2) <element name="e" type="tns:t"/> 

funktioniert, wenn der Standard-Namespace ist „http://www.w3.org/2001/XMLSchema“ und die „tns“ Präfix wird dem Ziel-Namensraum gebunden.