1

時々変更される XSD がいくつかあります。

以前は XML ファイルをハードコーディングして記述していたため、XSD が変更されるたびに、その XSD に依存する XML ファイルを検索する必要がありました。

そのため、generateDS (バージョン 2.15b) に移行しました。

XSD が変更されるたびに、genereateDS スクリプトが実行され、クラスが生成されるように、generateDS を使用してスクリプトを作成しました。

生成されたクラスは、XML が適合するかどうかを確認するための「構造」として使用されます。

たとえば、これを XSD として持っているとします。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:tns="http://tempuri.org/PurchaseOrderSchema.xsd"
       targetNamespace="http://tempuri.org/PurchaseOrderSchema.xsd"
       elementFormDefault="qualified">

   <xsd:element name="PurchaseOrder" type="tns:PurchaseOrderType"/>
   <xsd:complexType name="PurchaseOrderType">
       <xsd:sequence>
           <xsd:element name="ShipTo" type="tns:USAddress" maxOccurs="2"/>
           <xsd:element name="BillTo" type="tns:USAddress"/>
       </xsd:sequence>
       <xsd:attribute name="OrderDate" type="xsd:date"/>
   </xsd:complexType>

   <xsd:complexType name="USAddress">
       <xsd:sequence>
           <xsd:element name="name"   type="xsd:string"/>
           <xsd:element name="street" type="xsd:string"/>
           <xsd:element name="city"   type="xsd:string"/>
           <xsd:element name="state"  type="xsd:string"/>
           <xsd:element name="zip"    type="xsd:integer"/>
       </xsd:sequence>
       <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
    </xsd:complexType>
</xsd:schema>

そして、私はこのクラスを作成しています:

us = orders_api.USAddress(state = "NY")
pot = orders_api.PurchaseOrderType(BillTo = us,
                           OrderDate=datetime.datetime.now())

potインスタンス ( ) を XSD で検証する方法はありますか? (この例では、pot は有効な xml ではありません。「ShipTo」要素がなく、「country」属性と別の要素がないためです)

4

1 に答える 1