defxmlschema/chapter16¶
Example 16-7 Defining derived types¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="../chapter22/example2207.xsd" />
<xs:complexType name="ShirtType">
<xs:complexContent>
<xs:extension base="ProductType">
<xs:sequence>
<xs:element name="size" type="xs:int" />
<xs:element name="color" type="xs:string" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="HatType">
<xs:complexContent>
<xs:extension base="ProductType">
<xs:sequence>
<xs:element name="size" type="xs:int" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="UmbrellaType">
<xs:complexContent>
<xs:extension base="ProductType" />
</xs:complexContent>
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
from tests.fixtures.defxmlschema.chapter22.example2207 import (
ProductType,
)
@dataclass
class HatType(ProductType):
"""
:ivar size:
"""
size: Optional[int] = field(
default=None,
metadata=dict(
name="size",
type="Element",
required=True
)
)
@dataclass
class ShirtType(ProductType):
"""
:ivar size:
:ivar color:
"""
size: Optional[int] = field(
default=None,
metadata=dict(
name="size",
type="Element",
required=True
)
)
color: Optional[str] = field(
default=None,
metadata=dict(
name="color",
type="Element",
required=True
)
)
@dataclass
class UmbrellaType(ProductType):
pass
Samples Source
Definitive XML Schema by Priscilla Walmsley (c) 2012 Prentice Hall PTR