Chapter 8. Creating Building Blocks

We have already seen most of the basic building blocks: elements, attributes, simple and complex types, element and attribute groups. In this chapter, we will see how we can reuse these building blocks between schemas. In doing so, we will see how schemas can be included and redefined to create schema libraries.

Schema Inclusion

The first and most straightforward way to build schema libraries is through inclusion, a feature similar to the inclusion in traditional programming languages, such as C. Compared to a “physical” inclusion, such as the result of expanding an external entity reference, or using XInclude (described in Section 8.3.2, later in this chapter), schema inclusion is a “logical” inclusion, which can control the semantic of the inclusion. Schema inclusion may also be seen as a specific form of schema redefinition (seen in the next section). Note that a schema inclusion or redefinition is restricted to the definition of a single namespace (or lack of namespace) and that another mechanism (schema import), which is discussed in Chapter 10, must be used to import definitions for other namespaces.

Schema inclusions must be top-level elements, children of the xs:schema element. Their effect is to include all the top-level declarations of the included schema (which doesn’t need to be a complete schema). The included top-level elements are then considered top-level elements of the resulting schema. There are no priority or precedence rules ...

Get XML Schema now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.