by Eric van der Vlist is published by O'Reilly & Associates (ISBN: 0596004214)
Table of Contents
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 a bottom-up or top-down approach. Proponents of a bottom-up approach include those who enjoy working with instance documents rather than with schemas. Examplotron has been designed for these people. Those adept at using a top-down approach will want to work at a higher level of abstraction and use a methodology such as UML to model their documents. These two approaches might lead to many other variants. You will also see how developers using literate programming techniques can include RELAX NG patterns in their documentation as well as how you can replace your RELAX NG schema with a simple spreadsheet.
This text is released under the Free Software Foundation GFDL.