2012-05-15 63 views
0

例如,讓我們說我們有以下模式(在http://www.w3.org/TR/xmlschema-0/#NS上市)Xml架構中的目標命名空間的解釋?

<schema xmlns="http://www.w3.org/2001/XMLSchema" 
     xmlns:po="http://www.example.com/PO1" 
     targetNamespace="http://www.example.com/PO1" 
     elementFormDefault="unqualified" 
     attributeFormDefault="unqualified"> 

    <element name="purchaseOrder" type="po:PurchaseOrderType"/> 
    <element name="comment"  type="string"/> 

    <complexType name="PurchaseOrderType"> 
    <sequence> 
     <element name="shipTo" type="po:USAddress"/> 
     <element name="billTo" type="po:USAddress"/> 
     <element ref="po:comment" minOccurs="0"/> 
     <!-- etc. --> 
    </sequence> 
    <!-- etc. --> 
    </complexType> 

    <complexType name="USAddress"> 
    <sequence> 
     <element name="name" type="string"/> 
     <element name="street" type="string"/> 
     <!-- etc. --> 
    </sequence> 
    </complexType> 

    <!-- etc. --> 

</schema> 

你能解釋一下每個屬性中的「架構」節點的目的是什麼意思?我一直在試圖圍住它,但我不明白。請糾正我,如果我錯了:

我假設xmlns="http://www.w3.org/2001/XMLSchema"是指元素&沒有前綴的屬性。

xmlns:po="http://www.example.com/PO1"似乎意味着任何以po爲前綴的內容都指向此網址(example.com/p01)。

我不明白targetNamespace是用於什麼。我也不明白什麼是合格或不合格的手段。

回答

1

這是一個術語雷區,但本質上,xmlns="http://www.w3.org/2001/XMLSchema"xmlns:po="http://www.example.com/PO1"是爲了聲明架構文檔本身的命名空間。請記住,XML Schema只是一個XML文檔,它需要聲明它使用的命名空間,就像其他任何XML文檔一樣。

targetNamespace用於定義模式實例文檔的命名空間,即符合您的模式的文檔。這些文件將聲明他們的命名空間爲http://www.example.com/PO1,其任何前綴可以選自例如他們可以使用xmlns="http://www.example.com/PO1"xmlns:po="http://www.example.com/PO1"