Chapter 14. Generating RELAX NG Schemas

In the previous chapter, you saw how information can be added to RELAX NG schemas to make them more readable. The information can also help extract information from the schemas or transform them into other useful documents such as documentation, diagrams, or applications. So far, the underlying assumption in this book has been that schema designers work directly in RELAX NG. This is certainly a reasonable point of view. However, a RELAX NG schema (and any XML schema in general) is a fairly concrete model of a class of instance documents. You might also want to work with information in more abstract or more concrete ways and generate RELAX NG schemas based on results from these other approaches.

RELAX NG shines as an ideal choice for a target language because it almost completely lacks restrictions. This lack of restrictions means that during the transformation of a model into a RELAX NG schema, you won’t have to remind yourself of things like: “I must declare all my attributes after my elements,” “I should disallow unordered models in such and such circumstances,” “if I have already declared this content here, I can’t declare it again here.” In other words, using RELAX NG as your target language lets you concentrate on your document structures instead of worrying about the constraints of the schema language.

What other levels might you want to work on? You can take either a more concrete or more abstract approach than RELAX NG. It can have either ...

Get RELAX NG 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.