首页 > 解决方案 > xsd 如何在元素中包含 targetNamespace

问题描述

我有以下 xsd 我在其中定义了targetNamespace. 我想targetNamespace在元素中包含lastModifiedDate。这个 xsd 不正确:

<xs:schema version="1.0" targetNamespace="http://com.uciext.ws.hw5"   xmlns:tns="http://com.uciext.ws.hw5" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
  <xs:element name="catalog">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="lastModifiedDate"/>
        <xs:element ref="description"/>
        <xs:element maxOccurs="unbounded" ref="product"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="lastModifiedDate" type="xs:string"/>
  <xs:element name="description" type="xs:string"/>
  <xs:element name="product">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="sku"/>
        <xs:element ref="name"/>
        <xs:element ref="price"/>
        <xs:element ref="quantity"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="sku" type="xs:string"/>
  <xs:element name="name" type="xs:string"/>
  <xs:element name="price" type="xs:double"/>
  <xs:element name="quantity" type="xs:double"/>
</xs:schema>

当我检查这个 xsd 时,我得到以下元素:

Error resolving component 'lastModifiedDate'. It was detected that 'lastModifiedDate' has no namespace

我怎样才能包括targetNamespace

标签: xsd-validation

解决方案


我认为您需要在每个引用的元素中添加名称空间...

<xs:schema version="1.0" targetNamespace="http://com.uciext.ws.hw5"   xmlns:tns="http://com.uciext.ws.hw5" xmlns:xs="http://www.w3.org/2001/XMLSchema" >
  <xs:element name="catalog">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:lastModifiedDate"/>
        <xs:element ref="tns:description"/>
        <xs:element maxOccurs="unbounded" ref="tns:product"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="lastModifiedDate" type="xs:string"/>
  <xs:element name="description" type="xs:string"/>
  <xs:element name="product">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:sku"/>
        <xs:element ref="tns:name"/>
        <xs:element ref="tns:price"/>
        <xs:element ref="tns:quantity"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="sku" type="xs:string"/>
  <xs:element name="name" type="xs:string"/>
  <xs:element name="price" type="xs:double"/>
  <xs:element name="quantity" type="xs:double"/>
</xs:schema>

希望能帮助到你...

问候


推荐阅读