#03 - NamespacesΒΆ

Code Generation

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:ord="http://example.org/ord">

  <xsd:annotation>
    <xsd:documentation>
      This provides an example of validating an instance with multiple namespaces.
      chapter03env.xsd imports chapter03ord.xsd, which imports chapter03prod.xsd, which
      imports chapter03prod2.xsd.  The "form" attribute is used to indicate whether
      element-type and/or attribute names should be qualified in the instance.
    </xsd:documentation>
  </xsd:annotation>

  <xsd:import namespace="http://example.org/ord" schemaLocation="chapter03ord.xsd"/>

  <xsd:element name="envelope" type="EnvelopeType"/>

  <xsd:complexType name="EnvelopeType">
    <xsd:sequence>
      <xsd:element ref="ord:order" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

</xsd:schema>
from dataclasses import dataclass, field
from typing import List
from tests.fixtures.defxmlschema.chapter03ord import Order


@dataclass
class EnvelopeType:
    order: List[Order] = field(
        default_factory=list,
        metadata={
            "type": "Element",
            "namespace": "http://example.org/ord",
            "min_occurs": 1,
        }
    )


@dataclass
class Envelope(EnvelopeType):
    class Meta:
        name = "envelope"

Data Binding

<envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="chapter03.xsd">
  <order  xmlns="http://example.org/ord"
          xmlns:prod="http://example.org/prod">
    <number>123ABBCC123</number>
    <items>
      <product xmlns="http://example.org/prod">
        <number prod:id="prod557">557</number>
        <name xmlns="">Short-Sleeved Linen Blouse</name>
        <prod:size system="US-DRESS">10</prod:size>
        <prod:color xmlns:prod="http://example.org/prod2"
                    prod:value="blue"/>
      </product>
    </items>
  </order>
</envelope>
<envelope>
  <ns0:order xmlns:ns0="http://example.org/ord">
    <ns0:number>123ABBCC123</ns0:number>
    <ns0:items>
      <ns1:product xmlns:ns1="http://example.org/prod">
        <ns1:number ns1:id="prod557">557</ns1:number>
        <name>Short-Sleeved Linen Blouse</name>
        <ns1:size system="US-DRESS">10</ns1:size>
        <ns2:color xmlns:ns2="http://example.org/prod2" ns2:value="blue"/>
      </ns1:product>
    </ns0:items>
  </ns0:order>
</envelope>
{
    "order": [
        {
            "number": "123ABBCC123",
            "items": {
                "product": [
                    {
                        "number": {
                            "value": 557,
                            "id": "prod557"
                        },
                        "name": "Short-Sleeved Linen Blouse",
                        "size": {
                            "value": 10,
                            "system": "US-DRESS"
                        },
                        "color": {
                            "value": "blue"
                        }
                    }
                ]
            }
        }
    ]
}

Samples Source

Definitive XML Schema by Priscilla Walmsley (c) 2012 Prentice Hall PTR