XML Schema design considerations: A training course


XML data must be designed and structured carefully to ensure that it is accurate, flexible, performant and reusable. Design decisions can seriously impact the quality, usability and shelf life of XML applications. While much attention is given to database design techniques, less has historically been given to XML design.

This tutorial weighs the many alternatives available for designing XML documents and their associated schemas. It provides recommendations on issues such as namespace use, modularity, extensibility and versioning. In addition, it presents common, reusable design patterns for XML data.

The presentation specifically targets users who are designing XML vocabularies using W3C XML Schema. Emphasis is on highly structured "data-oriented" XML rather than "document-oriented" XML.


This course assumes detailed knowledge of XML, Namespaces and W3C XML Schema.


2-3 days


To schedule a class, please contact us at pwalmsley@datypic.com.

Topics covered

  1. Introduction to XML design
    • XML design goals
    • Why is so little attention paid to XML design?
    • Influences on XML design
    • Uses for XML Schemas
  2. Structuring complex elements
    • Child elements vs. attributes
    • Composing content models
    • Name/value pairs
    • Relationships
  3. Considerations for simple content
    • Granularity
    • Lists
    • Whitespace and strings
    • Representing missing values
    • Code lists
  4. Structuring schemas
    • Global vs. local declarations
    • Named vs. anonymous types
    • Schema structure patterns
    • Schema modularity
  5. Names and namespaces
    • General namespace recommendations
    • Namespaces in schema documents
    • Qualified and unqualified forms
    • Structuring namespaces
    • Naming standards
  6. Flexibility
    • How much flexibility?
    • Methods of providing flexibility
      • Choice groups
      • Substitution groups
      • Type substitution
      • Wildcards
  7. Reuse
    • Reuse benefits
    • Reusable components
    • Methods of reusing shared content
      • Named model groups
      • Type derivation
      • Child elements
  8. Extensibility
    • Extension benefits
    • Methods of extension
      • Wildcards
      • Type derivation
      • Substitution groups
      • Type redefinition
      • Group redefinition
  9. Versioning
    • Versioning issues
    • Schema compatibility
    • Backward compatible changes to schemas
    • Backward incompatible changes to schemas
    • Application compatibility
    • Granularity of versions
    • Indicating version number
      • In the schema document
      • In the schema location
      • In the instance document
      • In the namespace name
    • Complete versioning strategies
  10. Schema documentation
    • Annotations
    • Application information
    • Non-native attributes
    • Comments
    • Documenting namespaces
  11. XML design in multi-user environments
    • Encouraging good schema design
    • Naming and design rules
    • Schema management