0

xsd ファイルがあり、それに応じて xml を作成する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.1" elementFormDefault="qualified" attributeFormDefault="unqualified">

  <xs:simpleType name="edateTimeType">
    <xs:restriction base="xs:dateTime">

    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="eEurocents">
    <xs:restriction base="xs:int">
      <xs:maxExclusive value="1000000"/>
      <xs:minExclusive value="-1000000"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="unixTimestampType">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:minInclusive value="1262304000"/>
      <!-- after 1.1.2010-->
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="timeRangeType">
    <xs:sequence>
      <xs:element name="start" type="edateTimeType" minOccurs="1" maxOccurs="1"/>
      <xs:element name="stop" type="edateTimeType" minOccurs="1" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="apiobject">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="header" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="A" type="eEurocents" minOccurs="1" maxOccurs="1"/>
              <xs:element name="B" type="eEurocents" minOccurs="0" maxOccurs="1"/>
              <xs:element name="unixTimestamp" type="unixTimestampType" minOccurs="1" maxOccurs="1"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:choice maxOccurs="1">
          <xs:element name="response" minOccurs="0" maxOccurs="1">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="TableType1" minOccurs="0" maxOccurs="5">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="teid" type="unixTimestampType"/>
                      <xs:element name="entry" type="eEurocents" maxOccurs="192"/>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="request" minOccurs="0" maxOccurs="1">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="TableType1" minOccurs="0" maxOccurs="5">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="timestamp" type="unixTimestampType"/>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

python3 pyxb/pyxbgen を使用してバインディング ライブラリをインポートする前に、これを数回実行しました。

今度は、新しいバージョンの xsd ファイルで同じことを試しました。新しい xsd の apiobject には、要求と応答の 2 種類のオブジェクトがあります。タイプ TableType1 は、応答と要求で別々に定義されます。しかし、バインディング ライブラリでは、リクエストとレスポンスの内部型にアクセスできません。

私がやりたいことは、TableType1 を含む応答で apiobject の xml 文字列を生成することです。しかし、TableType1 オブジェクトにアクセスできないため、それを埋めることも、apiobject の応答に入れることもできません。

TableType1 で有効な apiobject 応答を作成するにはどうすればよいですか?

PS: 一部の xml エディターは、xsd が有効であると言っています。しかし、pyxb は xsd スキームを使用してサンプル xml ファイルをインポートできません...

4

1 に答える 1