0

XSD スキーマの発言:

Line: 2, Position: 2 "Could not find schema information for the element 'ArrayOfClient'."
Line: 3, Position: 4 "Could not find schema information for the element 'Client'."
Line: 3, Position: 11 "Could not find schema information for the attribute 'ID'."
Line: 3, Position: 27 "Could not find schema information for the attribute 'email'."

XSD スキーマ:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="XMLSchema1"
    targetNamespace="http://tempuri.org/XMLSchema1.xsd"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org/XMLSchema1.xsd"
    xmlns:mstns="http://tempuri.org/XMLSchema1.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:simpleType name="stringtype">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>

  <xs:complexType name="clientType">
    <xs:attribute name="ID"     type="stringtype" use="required"/>
    <xs:attribute name="email"  type="stringtype" use="required"/>
  </xs:complexType>

  <xs:complexType name="ClientsType">
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="Client" type="clientType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ArrayOfClient" type="ClientsType"/>
</xs:schema>

XML ファイル:

<?xml version="1.0"?>
<ArrayOfClient xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Client ID="00000000" email="user@mail.com" />
</ArrayOfClient>
  1. これは機能しません。xml ファイルは .NET C# の XmlSerializer で生成されます。
  2. ID属性の検証を強制して、常に10桁の数字と電子メールになるようにする方法はありますか?

編集: XML ファイルを作成する方法の詳細については、こちらを参照してください。

4

1 に答える 1

1

あるべきxmlnsがありませんhttp://tempuri.org/XMLSchema1.xsd。つまり、次ArrayOfClientのような属性が必要ですxmlns="http://tempuri.org/XMLSchema1.xsd"

あなたが指摘している例では、XML 名前空間を利用していません。xsd.exe /c your.xsd を実行して、生成されたクラスを確認することをお勧めします。見落としている違いが正確にわかります。

于 2013-10-22T16:05:03.077 に答える