Ошибка: пространство имен схемы элемента должно быть из пространства имен схемы http://www.w3.org/2001/XMLSchema

Ниже мой XSD. Я получаю ошибки. Не могли бы вы подтвердить это?

<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://api.vvz.com/"
            xmlns:vz="http://api.vvz.com/"
            targetNamespace="http://api.vvz.com/">
  <vz:element name="Account">
    <annotation>
      <documentation>
        A sample element
      </documentation>
    </annotation>
    <simpleType name="ID">
    <restriction base="xs:string">
     <pattern value='[a-zA-Z0-9]'/>
    </restriction>
   </simpleType>
     <complexType>
    <complexContent>
     <sequence>
     <element minOccurs="0" maxOccurs="unbounded" name="fieldsToNull"
              nillable="true" type="string"/>
     <element minOccurs="0" maxOccurs="1" name="Id" nillable="true"
              type="vz:ID"/>
    </sequence>
    </complexContent>
   </complexType>
  </vz:element>
</xsd:schema>

Ошибка

Пространство имен схемы элемента должно быть из пространства имен схемы " http://www.w3.org/2001/XMLSchema"

Пожалуйста, помогите мне.

2 ответа

Ваша немедленная ошибка относительно целевого пространства имен связана с объявлением xmlns="http://api.vvz.com/" на xsd:schema, Удалить это. Вам не нужен сам XSD в этом пространстве имен; вам нужен управляемый XML в этом пространстве имен, и это уже достигается с помощью targetNamespace="http://api.vvz.com/",

В остальной части вашего XSD есть много ошибок и неясных целей. Вот один набор последовательных исправлений, которые делают его действительным:

<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:vz="http://api.vvz.com/"
            targetNamespace="http://api.vvz.com/">

  <xsd:element name="Account" type="vz:AccountType">
    <xsd:annotation>
      <xsd:documentation>
        A sample element
      </xsd:documentation>
    </xsd:annotation>
  </xsd:element>

  <xsd:complexType name="AccountType">
    <xsd:sequence>
      <xsd:element minOccurs="0" maxOccurs="unbounded" name="fieldsToNull"
                   nillable="true" type="xsd:string"/>
      <xsd:element minOccurs="0" maxOccurs="1" name="Id" nillable="true"
                   type="vz:IdType"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:simpleType name="IdType">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value='[a-zA-Z0-9]'/>
    </xsd:restriction>
  </xsd:simpleType>  

</xsd:schema> 

Было несколько проблем:

  • Все элементы, из которых состоит схема, должны находиться в пространстве имен схемы XML (используйте xsd префикс).
  • Именованный простой тип должен быть верхнего уровня.
  • Ссылки на встроенный тип string также должен находиться в пространстве имен схемы XML (xsd префикс).
  • Элемент complexContent был посторонним.

    <?xml version="1.0" encoding="windows-1252" ?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns="http://api.vvz.com/"
        xmlns:vz="http://api.vvz.com/"
        targetNamespace="http://api.vvz.com/">
        <xsd:simpleType name="ID">
            <xsd:restriction base="xsd:string">
                <xsd:pattern value='[a-zA-Z0-9]'/>
            </xsd:restriction>
        </xsd:simpleType>
        <xsd:annotation>
            <xsd:documentation>
                A sample element
            </xsd:documentation>
        </xsd:annotation>
        <xsd:element name="Account">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="unbounded" name="fieldsToNull"
                        nillable="true" type="xsd:string"/>
                    <xsd:element minOccurs="0" maxOccurs="1" name="Id" nillable="true"
                        type="vz:ID"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:schema>
    
Другие вопросы по тегам