0

例如,假设我们有以下模式(列在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"指的是没有前缀的元素和属性。

xmlns:po="http://www.example.com/PO1"似乎这意味着任何以 , 为前缀的东西都po指的是这个 url (example.com/p01)。

我不明白这targetNamespace是为了什么。我也不明白合格或不合格是什么意思。

4

1 回答 1

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"

于 2012-05-15T08:25:49.027 回答