defxmlschema/chapter15¶
Example 15-1 Named model group with local element declarations¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="DescriptionGroup">
<xs:sequence>
<xs:element name="description" type="xs:string" />
<xs:element name="comment" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:group>
<xs:complexType name="DescriptionGroup">
<xs:group ref="DescriptionGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class DescriptionGroup:
"""
:ivar description:
:ivar comment:
"""
description: Optional[str] = field(
default=None,
metadata=dict(
name="description",
type="Element",
required=True
)
)
comment: Optional[str] = field(
default=None,
metadata=dict(
name="comment",
type="Element"
)
)
Example 15-10 Attribute group with a wildcard¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attributeGroup name="IdentifierGroup">
<xs:attribute name="id" type="xs:ID" use="required" />
<xs:attribute name="version" type="xs:decimal" />
<xs:anyAttribute namespace="##other" />
</xs:attributeGroup>
<xs:complexType name="IdentifierGroup">
<xs:attributeGroup ref="IdentifierGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class IdentifierGroup:
"""
:ivar id:
:ivar version:
"""
id: Optional[str] = field(
default=None,
metadata=dict(
name="id",
type="Attribute",
required=True
)
)
version: Optional[float] = field(
default=None,
metadata=dict(
name="version",
type="Attribute"
)
)
Example 15-14 Attribute group referencing an attribute group¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attributeGroup name="HeaderGroup">
<xs:attributeGroup ref="IdentifierGroup" />
</xs:attributeGroup>
<xs:attributeGroup name="IdentifierGroup">
<xs:attribute name="id" type="xs:ID" use="required" />
<xs:attribute name="version" type="xs:decimal" />
</xs:attributeGroup>
<xs:complexType name="HeaderGroup">
<xs:attributeGroup ref="HeaderGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class HeaderGroup:
"""
:ivar id:
:ivar version:
"""
id: Optional[str] = field(
default=None,
metadata=dict(
name="id",
type="Attribute",
required=True
)
)
version: Optional[float] = field(
default=None,
metadata=dict(
name="version",
type="Attribute"
)
)
Example 15-17 Named groups across namespaces¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://datypic.com/ord" xmlns:prod="http://datypic.com/prod" targetNamespace="http://datypic.com/ord">
<xs:import namespace="http://datypic.com/prod" schemaLocation="example15172.xsd" />
<xs:complexType name="PurchaseOrderType">
<xs:sequence>
<xs:group ref="prod:DescriptionGroup" minOccurs="0" />
</xs:sequence>
<xs:attributeGroup ref="prod:IdentifierGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class PurchaseOrderType:
"""
:ivar id:
:ivar version:
:ivar description:
:ivar comment:
"""
id: Optional[str] = field(
default=None,
metadata=dict(
name="id",
type="Attribute",
required=True
)
)
version: Optional[float] = field(
default=None,
metadata=dict(
name="version",
type="Attribute"
)
)
description: Optional[str] = field(
default=None,
metadata=dict(
name="description",
type="Element",
namespace="http://datypic.com/prod",
required=True
)
)
comment: Optional[str] = field(
default=None,
metadata=dict(
name="comment",
type="Element",
namespace="http://datypic.com/prod"
)
)
Example 15-2 Named model group with element references¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="description" type="xs:string" />
<xs:element name="comment" type="xs:string" />
<xs:group name="DescriptionGroup">
<xs:sequence>
<xs:element ref="description" />
<xs:element ref="comment" minOccurs="0" />
</xs:sequence>
</xs:group>
<xs:complexType name="DescriptionGroup">
<xs:group ref="DescriptionGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class Comment:
"""
:ivar value:
"""
class Meta:
name = "comment"
value: Optional[str] = field(
default=None,
metadata=dict(
name="value",
type="Extension"
)
)
@dataclass
class Description:
"""
:ivar value:
"""
class Meta:
name = "description"
value: Optional[str] = field(
default=None,
metadata=dict(
name="value",
type="Extension"
)
)
@dataclass
class DescriptionGroup:
"""
:ivar description:
:ivar comment:
"""
description: Optional[Description] = field(
default=None,
metadata=dict(
name="description",
type="Element",
required=True
)
)
comment: Optional[Comment] = field(
default=None,
metadata=dict(
name="comment",
type="Element"
)
)
Example 15-4 Equivalent content model without a named model group reference¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="PurchaseOrderType">
<xs:sequence>
<xs:sequence minOccurs="0">
<xs:element name="description" type="xs:string" />
<xs:element name="comment" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class PurchaseOrderType:
"""
:ivar description:
:ivar comment:
"""
description: Optional[str] = field(
default=None,
metadata=dict(
name="description",
type="Element",
required=True
)
)
comment: Optional[str] = field(
default=None,
metadata=dict(
name="comment",
type="Element"
)
)
Example 15-5 Group reference at the top level of the content model¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="DescriptionType">
<xs:group ref="DescriptionGroup" />
<xs:attribute name="lang" type="xs:string" />
</xs:complexType>
<xs:group name="DescriptionGroup">
<xs:sequence>
<xs:element name="description" type="xs:string" />
<xs:element name="comment" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:group>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class DescriptionType:
"""
:ivar description:
:ivar comment:
:ivar lang:
"""
description: Optional[str] = field(
default=None,
metadata=dict(
name="description",
type="Element",
required=True
)
)
comment: Optional[str] = field(
default=None,
metadata=dict(
name="comment",
type="Element"
)
)
lang: Optional[str] = field(
default=None,
metadata=dict(
name="lang",
type="Attribute"
)
)
Example 15-6 Group with an all model group¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="DescriptionGroup">
<xs:all>
<xs:element name="description" type="xs:string" />
<xs:element name="comment" type="xs:string" minOccurs="0" />
</xs:all>
</xs:group>
<xs:complexType name="DescriptionGroup">
<xs:group ref="DescriptionGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class DescriptionGroup:
"""
:ivar description:
:ivar comment:
"""
description: Optional[str] = field(
default=None,
metadata=dict(
name="description",
type="Element",
required=True
)
)
comment: Optional[str] = field(
default=None,
metadata=dict(
name="comment",
type="Element"
)
)
Example 15-7 Group reference from a group¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="ProductPropertyGroup">
<xs:sequence>
<xs:group ref="DescriptionGroup" />
<xs:element name="number" type="xs:integer" />
<xs:element name="name" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:group name="DescriptionGroup">
<xs:sequence>
<xs:element name="description" type="xs:string" />
<xs:element name="comment" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:group>
<xs:complexType name="DescriptionGroup">
<xs:group ref="DescriptionGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class DescriptionGroup:
"""
:ivar description:
:ivar comment:
"""
description: Optional[str] = field(
default=None,
metadata=dict(
name="description",
type="Element",
required=True
)
)
comment: Optional[str] = field(
default=None,
metadata=dict(
name="comment",
type="Element"
)
)
Example 15-8 Attribute group with local attribute declarations¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attributeGroup name="IdentifierGroup">
<xs:attribute name="id" type="xs:ID" use="required" />
<xs:attribute name="version" type="xs:decimal" />
</xs:attributeGroup>
<xs:complexType name="IdentifierGroup">
<xs:attributeGroup ref="IdentifierGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class IdentifierGroup:
"""
:ivar id:
:ivar version:
"""
id: Optional[str] = field(
default=None,
metadata=dict(
name="id",
type="Attribute",
required=True
)
)
version: Optional[float] = field(
default=None,
metadata=dict(
name="version",
type="Attribute"
)
)
Example 15-9 Attribute group with attribute references¶
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="version" type="xs:decimal" />
<xs:attributeGroup name="IdentifierGroup">
<xs:attribute ref="id" use="required" />
<xs:attribute ref="version" />
</xs:attributeGroup>
<xs:complexType name="IdentifierGroup">
<xs:attributeGroup ref="IdentifierGroup" />
</xs:complexType>
</xs:schema>
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class IdentifierGroup:
"""
:ivar id:
:ivar version:
"""
id: Optional[str] = field(
default=None,
metadata=dict(
name="id",
type="Attribute",
required=True
)
)
version: Optional[float] = field(
default=None,
metadata=dict(
name="version",
type="Attribute"
)
)
Samples Source
Definitive XML Schema by Priscilla Walmsley (c) 2012 Prentice Hall PTR