2012-02-19 18 views
0

XFAの静的形式からいくつかのXMLを抽出しています。ここ はサンプルです:XMLバリデーションc# - 複合型

<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"> 
<xfa:data> 
<frmMain> 
<InspectionDate>19/02/2012</InspectionDate> 
<ENID>111114567</ENID> 
<EmployeeNumber>1234</EmployeeNumber> 
<GroundType> 
    <value>Tarmac</value> 
    <value>Concrete</value> 
</GroundType> 
<Width>800</Width> 
<Height>900</Height> 
<OtherDetails>Corssing of x road and y street</OtherDetails> 
</frmMain> 
</xfa:data> 
</xfa:datasets> 

私はここで に対してそのXMLを検証することができますので、私は、スキーマを生成するには、Windows SDK 7.0ユーティリティXsd.exeではを使用するには、次のとおりです。

私はXmlReaderSettingsを使用
<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="datasets" targetNamespace="http://www.xfa.org/schema/xfa-data/1.0/" xmlns:mstns="http://www.xfa.org/schema/xfa-data/1.0/" xmlns="http://www.xfa.org/schema/xfa-data/1.0/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"> 
    <xs:attribute name="dataNode" msdata:Prefix="xfa" type="xs:string" /> 
    <xs:element name="datasets" msdata:IsDataSet="true" msdata:Locale="en-US" msdata:Prefix="xfa"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="data" msdata:Prefix="xfa"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="frmMain" form="unqualified"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="InspectionDate" form="unqualified" type="xs:string" minOccurs="0" /> 
        <xs:element name="ENID" form="unqualified" type="xs:string" minOccurs="0" /> 
        <xs:element name="EmployeeNumber" form="unqualified" type="xs:string" minOccurs="0" /> 
        <xs:element name="Width" form="unqualified" type="xs:string" minOccurs="0" /> 
        <xs:element name="Height" form="unqualified" type="xs:string" minOccurs="0" /> 
        <xs:element name="OtherDetails" form="unqualified" type="xs:string" minOccurs="0" /> 
        <xs:element name="GroundType" form="unqualified" minOccurs="0" maxOccurs="unbounded"> 
         <xs:complexType> 
         <xs:attribute ref="mstns:dataNode" /> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:choice> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

XmlReaderは、Xsdに対してXmlを読み取り、検証します。私が複雑なタイプを持っていない限り、すべては大丈夫です。しかし、この場合私は持っています。

何ができますか?

そして、私は取得していますエラーは次のとおりです。

要素「GroundTypeの親要素の内容モデルが空であるため、子要素「の値」を含めることはできませんが。

+0

あなたの質問は明らかではありません。何が違うのですか?何か特別なエラーや予期しない動作がありますか? –

+0

エラーを追加しました。これを指摘してくれてありがとうございます。 –

答えて

1

あなたGroundTypeの定義は次のようになります。

<xs:element name="GroundType" form="unqualified" minOccurs="0" maxOccurs="unbounded"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="value" form="unqualified" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> 
     </xs:sequence> 
     <xs:attribute ref="mstns:dataNode"/> 
    </xs:complexType> 
</xs:element> 
+0

ありがとうございました。Xsd.exeがデフォルトで実行していないのは残念です。 –

関連する問題