diff options
Diffstat (limited to 'testdata/xmlparser/book_domain.osxml')
-rw-r--r-- | testdata/xmlparser/book_domain.osxml | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/testdata/xmlparser/book_domain.osxml b/testdata/xmlparser/book_domain.osxml new file mode 100644 index 0000000..4218915 --- /dev/null +++ b/testdata/xmlparser/book_domain.osxml @@ -0,0 +1,98 @@ +<?xml version="1.0" standalone="yes"?> +<!-- The domain node is the root node of a single domain definition --> +<domain name="book"> + <!-- We start by declaring the structured classes. This implicitly defines + a context free grammar, which specifies the language of documents that + may be constructed using this domain. Note that this grammar may be + influenced by other domains depending on this one. --> + <!-- Note that we specify neither attributes, + nor parent, nor transparency, meaning that we refer to the default + values. Also note that we need to specify explicitly, which classes + are allowed as root nodes. --> + <struct name="book" cardinality="{1}" isRoot="true"> + <!-- implicitly: + <struct name="book" cardinality="{1}" isRoot="true" + transparent="false" isa="" attributesDescriptor=""> + --> + <!-- Note that we assume that, if not specified, a + field is assumed to have no name, be of type TREE + and not optional. --> + <field> + <!-- implicitly: + <field name="" isSubtree="false" optional="false"> + --> + <!-- Using such child references might be problematic if + multiple nodes are matched. This should probably + result in an exception. + Also note that we only reference the child classes. + We do _not_ declare them here. This might lead to + some difficulties in the parsing process as I + effectively use forward declarations here. So the + resolve() process may only be started _after_ all + delcarations are read. --> + <childRef ref="book.chapter"/> + <!-- The dot notation as path separator might be changed + but I think it to be intuitive. If we want a more + CSS like style we can use whitespaces here. --> + <childRef ref="book.paragraph"/> + </field> + </struct> + <struct name="chapter"> + <!-- implicitly: + <struct name="chapter" isRoot="false" cardinality="{*}" + transparent="false" isa="" attributesDescriptor=""> + --> + <field> + <!-- implicitly: + <field name="" isSubtree="false" optional="false"> + --> + <childRef ref="book.section"/> + <childRef ref="book.paragraph"/> + </field> + </struct> + <struct name="section"> + <!-- implicitly: + <struct name="section" isRoot="false" cardinality="{*}" + transparent="false" isa="" attributesDescriptor=""> + --> + <field> + <!-- implicitly: + <field name="" isSubtree="false" optional="false"> + --> + <childRef ref="book.subsection"/> + <childRef ref="book.paragraph"/> + </field> + </struct> + <struct name="subsection"> + <!-- implicitly: + <struct name="subsection" isRoot="false" cardinality="{*}" + transparent="false" isa="" attributesDescriptor=""> + --> + <field> + <!-- implicitly: + <field name="" isSubtree="false" optional="false"> + --> + <childRef ref="book.paragraph"/> + </field> + </struct> + <struct name="paragraph" transparent="true" role="paragraph"> + <!-- implicitly: + <struct name="subsection" isRoot="false" cardinality="{*}" + transparent="true" isa="" attributesDescriptor=""> + --> + <field> + <!-- implicitly: + <field name="" type="TREE" optional="false"> + --> + <childRef ref="book.text"/> + </field> + </struct> + <struct name="text" transparent="true" role="text"> + <!-- implicitly: + <struct name="text" isRoot="false" cardinality="{*}" + transparent="true" isa="" attributesDescriptor=""> + --> + <!-- we might want to specify std.string here --> + <primitive type="string"/> + </struct> +</domain> |