例如,假设我们有以下架构(在http://www.w3.org/TR/xmlschema-0/#NS中列出)
<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"
指的是元素&amp;没有前缀的属性。
xmlns:po="http://www.example.com/PO1"
似乎意味着以po
为前缀的任何内容都指的是此网址(example.com/p01)。
我不明白targetNamespace
的用途。我也不明白什么是合格或不合格的手段。
答案 0 :(得分: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"