Common Principles for Annotating RELAX NG Schemas
RELAX NG doesn’t define specific
elements and attributes reserved for annotations. Instead, RELAX NG
opened its language. RELAX NG permits foreign
attributes—attributes from any namespace other than the RELAX
NG namespace—to appear on all its elements. RELAX NG also
allows elements either from no namespace or from any namespace other
than the RELAX NG namespace in all its elements with a content model
that is empty or element only. (That excludes all RELAX NG elements
except value
and param
, which
have a text-only content model.) RELAX NG is thus strictly following
the principles of an open schema presented in the previous chapter.
Annotation Using the XML Syntax
In the
XML syntax, adding annotations is both
easy and flexible. It’s a very straightforward
process to add annotations using foreign elements. For instance, here
I’ve added some
Dublin Core (dc
)
elements to our grammar to identify its title
and
author
:
<?xml version="1.0" encoding="utf-8"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:dc= "http://purl.org/dc/elements/1.1/"> <dc:title>RELAX NG flat schema for our library</dc:title> <dc:author>Eric van der Vlist</dc:author> <start> <element name="library"> <oneOrMore> <ref name="book-element"/> </oneOrMore> </element> </start> ... </grammar>
or perhaps some XHTML documentation:
<?xml version="1.0" encoding="utf-8"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:xhtml= "http://www.w3.org/1999/xhtml"> ...
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.