XSD - тип данных отсутствует - PullRequest
0 голосов
/ 18 марта 2011

У меня есть два файла XML-схемы (xsd).Один определяет тип данных, называемый «Ошибка», второй относится к нему.

Вот схемы:

CreateFolderResult.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="CreateFolderResult"
    targetNamespace="http://schemas.microsoft.com/sharepoint/soap/dws/"
    elementFormDefault="qualified"
    xmlns="http://schemas.microsoft.com/sharepoint/soap/dws/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:s="http://www.w3.org/2001/XMLSchema"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns="http://schemas.microsoft.com/sharepoint/soap/dws/"
>
  <s:element name="CreateFolderResult">
    <s:complexType>
      <s:choice>
        <s:element name="Result"/>
        <s:element name="Error" type="Error"/>
      </s:choice>
    </s:complexType>
  </s:element>
</xs:schema>

Error.xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Error"
    targetNamespace="http://schemas.microsoft.com/sharepoint/soap/dws/"
    elementFormDefault="qualified"
    xmlns="http://schemas.microsoft.com/sharepoint/soap/dws/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:s="http://www.w3.org/2001/XMLSchema"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"           
    xmlns:tns="http://schemas.microsoft.com/sharepoint/soap/dws/"           
>
  <xs:simpleType name="ErrorTypes">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ServerFailure"/>
      <xs:enumeration value="Failed"/>
      <xs:enumeration value="NoAccess"/>    
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Error">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="ErrorTypes">
          <xs:attribute name="ID">
            <xs:simpleType>
              <xs:restriction base="xs:integer">
                <xs:minInclusive value="1"/>
                <xs:maxInclusive value="14"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="AccessUrl" type="xs:string"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>  

</xs:schema>

Эти файлы схемы взяты из этого PDF: MS-DWSS

Когда я пытаюсь сгенерировать из них классы C #, я получаю сообщение о том, что "тип данных" http://schemas.microsoft.com/sharepoint/soap/dws/:Error' отсутствует.

Я нашел его в Google,и я попробовал несколько способов, как правильно использовать xsd.exe, но все еще имеет ту же ошибку.

Я использую команду «xsd.exe / c CreateFolderResult.xsd Error.xsd».

Я также создал этот «установщик»:

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
  <generateClasses language='CS' namespace='MyNamespace'>    
    <schema>CreateFolderResult.xsd</schema>
    <schema>Error.xsd</schema>
  </generateClasses>
</xsd>

и попытался запустить: «xsd.exe /p:Installer.xsd / c», но тоже не сработал.что-то не так при определении пространств имен.

Что я делаю не так? Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 18 марта 2011

Отказ от ответственности: я не знаю xsd.exe.

Обычно, когда вы хотите использовать типы из одной схемы в другой, вы должны

  • включить если целевые пространства имен совпадают
  • import если целевые пространства имен отличаются
...