Anonymous avatar Anonymous committed 6c10ec4

Basic ProgDoc schema is finished.

Comments (0)

Files changed (3)

Design/ProgDoc.rnc

 datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
 
 
-## Main elements and structure.
+## Elements and structure.
 div
 {
     start = pd.rootelements
         
     pd.codedocs =
         element codedocs { pd.codedocs.attlist, pd.codedocs.content }
-        
     pd.codedocs.content =
         pd.info, 
         (
-            pd.container &
+            pd.global.container &
             pd.doc.file_list? &
             pd.doc.page_list? &
             pd.doc.module_list? &
-            pd.doc.doc_list?
+            pd.doc.lang_list?
         )
-        
+    pd.codedocs.attlist =
+        pd.codedocs.language.attribute,
+        pd.codedocs.version.attribute,
+        pd.codedocs.tool_version.attribute?
+
     pd.info =
         element info { pd.info.attlist, pd.info.content }
+    pd.info.content = empty
+    pd.info.attlist = pd.info.name.attribute, pd.info.version.attribute
         
-    pd.info.content = empty
-        
-    pd.lang_string =
-        mixed { pd.lang_ref* }
-        
-    pd.lang_ref =
-        element ref { pd.lang_ref.attlist, pd.lang_ref.content }
-
-    pd.lang_ref.content = empty
-
     ## Language feature descriptions.
     div
     {
+        pd.global.container =
+            element container { pd.global.container.attlist, pd.global.container.content }
+        pd.global.container.content = pd.container.content
+        pd.global.container.attlist =
+            pd.common.doced.global.attlist,
+            pd.global.container.kind.attribute
+            
         pd.container =
             element container { pd.container.attlist, pd.container.content }
-            
         pd.container.content =
             pd.container.parent* &
             pd.container.child* &
             (pd.container*) &
             (pd.member_section*) &
             (pd.member*)
-            
+        pd.container.attlist = pd.common.language.attlist, pd.container.kind.attribute
+    
         pd.container.parent =
             element parent { pd.container.parent.attlist, pd.container.parent.content }
-            
-        pd.container.parent.content =
-            pd.container.linkage*
-            
+        pd.container.parent.content = pd.container.linkage*
+        pd.container.parent.attlist = pd.common.idref.attribute
+        
         pd.container.linkage =
             element linkage { pd.container.linkage.attlist, pd.container.linkage.content }
-            
-        pd.container.linkage.content =
-            empty
-        
+        pd.container.linkage.content = empty
+        pd.container.linkage.attlist = pd.linkage.kind.attribute
+
         pd.container.child =
             element child { pd.container.child.attlist, pd.container.child.content }
-            
         pd.container.child.content = empty
+        pd.container.child.attlist = pd.common.idref.attribute
             
         pd.template_list =
             element template-list { pd.template_list.attlist, pd.template_list.content }
-            
-        pd.template_list.content =
-            pd.template*
-            
+        pd.template_list.content = pd.template*
+        pd.template_list.attlist = empty
+
         pd.template =
             element template { pd.template.attlist, pd.template.content }
-            
-        pd.template.content =
-            pd.template.type, pd.template.default?
-            
+        pd.template.content = pd.template.type, pd.template.default?
+        pd.template.attlist = pd.common.name.attribute?
+        
         pd.template.type =
             element type { pd.template.type.attlist, pd.template.type.content }
-        
-        pd.template.type.content =
-            pd.lang_string
-            
+        pd.template.type.content = doc.lang_string
+        pd.template.type.attlist = empty
+    
         pd.template.default =
             element default { pd.template.default.attlist, pd.template.default.content }
-            
-        pd.template.default.content =
-            pd.lang_string
-            
+        pd.template.default.content = doc.lang_string
+        pd.template.default.attlist = empty
+    
         pd.property_list =
             element property-list { pd.property_list.attlist, pd.property_list.content }
-        
-        pd.property_list.content =
-            pd.property+
-            
+        pd.property_list.content = pd.property+
+        pd.property_list.attlist = empty
+
         pd.property =
             element property { pd.property.attlist, pd.property.content }
-            
         pd.property.content = empty
-            
+        pd.property.attlist = pd.property.kind.attribute
+        
         pd.member_section =
             element member_section { pd.member_section.attlist, pd.member_section.content }
-
-        pd.member_section.content =
-            pd.member+
-            
+        pd.member_section.content = pd.member+
+        pd.member_section.attlist = pd.common.language.attlist
+    
         pd.member =
             element member { pd.member.attlist, pd.member.content }
-            
         pd.member.content =
             pd.template_list? &
             pd.property_list? &
             pd.member.type? &
-            pd.param_list?
+            pd.param_list? &
+            pd.enum_value_list?
+        pd.member.attlist =
+            pd.common.language.attlist, pd.member.kind.attribute, pd.member.overrides.attribute?
         
         pd.member.type =
             element type { pd.member.type.attlist, pd.member.type.content }
-            
-        pd.member.type.content =
-            pd.lang_string
-            
+        pd.member.type.content = doc.lang_string
+        pd.member.type.attlist = pd.common.doc_ref.attribute?
+
         pd.param_list =
             element param-list { pd.param_list.attlist, pd.param_list.content }
-            
-        pd.param_list.content =
-            pd.param*
-            
+        pd.param_list.content = pd.param*
+        pd.param_list.attlist = empty
+    
         pd.param =
             element param { pd.param.attlist, pd.param.content }
-            
         pd.param.content =
             pd.param.type &
             pd.param.default? &
-            pd.param.array? &
-            pd.enum_value_list?
-            
+            pd.param.array?
+        pd.param.attlist =
+            pd.param.name.attribute?, pd.common.doc_ref.attribute?
+        
         pd.param.type =
             element type { pd.param.type.attlist, pd.param.type.content }
-            
-        pd.param.type.content =
-            pd.lang_string
-            
+        pd.param.type.content = doc.lang_string
+        pd.param.type.attlist = pd.common.doc_ref.attribute?
+        
         pd.param.default =
             element default { pd.param.default.attlist, pd.param.default.content }
-            
-        pd.param.default.content =
-            pd.lang_string
-            
+        pd.param.default.content = doc.lang_string
+        pd.param.default.attlist = empty
+    
         pd.param.array =
             element array { pd.param.array.attlist, pd.param.array.content }
-            
-        pd.param.array.content =
-            text | empty
-            
+        pd.param.array.content = text | empty
+        pd.param.array.attlist = empty
+    
         pd.enum_value_list =
             element enum-value-list { pd.enum_value_list.attlist, pd.enum_value_list.content }
-            
-        pd.enum_value_list.content =
-            pd.enum_value+
-            
+        pd.enum_value_list.content = pd.enum_value+
+        pd.enum_value_list.attlist = empty
+        
         pd.enum_value =
             element enum-value { pd.enum_value.attlist, pd.enum_value.content }
-            
-        pd.enum_value.content =
-            pd.enum.value?
+        pd.enum_value.content = pd.enum.value?
+        pd.enum_value.attlist = pd.common.doced.nofile.attlist
             
         pd.enum.value =
             element value { pd.enum.value.attlist, pd.enum.value.content }
-            
-        pd.enum.value.content =
-            pd.lang_string
+        pd.enum.value.content = doc.lang_string
+        pd.enum.value.attlist = empty
     }
     
     ## User-defined documented objects.
     div
     {
         pd.common.doc.content =
-            pd.short_doc? & pd.long_doc?
+            pd.short_doc |
+            pd.long_doc |
+            (pd.short_doc & pd.long_doc)
     
+        pd.short_doc =
+            element short-doc { pd.short_doc.attlist, pd.short_doc.content }
+        pd.short_doc.content = doc.block_elements+
+        pd.short_doc.attlist = empty
+        
+        pd.long_doc =
+            element long-doc { pd.long_doc.attlist, pd.long_doc.content }
+        pd.long_doc.content =
+            (doc.block_elements+, doc.block_section*) |
+            (doc.block_elements*, doc.block_section+)
+        pd.long_doc.attlist = empty
+
         pd.doc.file_list =
-            element file-list { pd.file_doc_list.content }
-            
-        pd.file_doc_list.content =
-            pd.file.doc+
+            element file-list { pd.file_doc_list.attlist, pd.file_doc_list.content }
+        pd.file_doc_list.content = pd.file.doc+
+        pd.file_doc_list.attlist = empty
             
         pd.file.doc =
             element doc { pd.file.doc.attlist, pd.file.doc.content }
-            
         pd.file.doc.content =
             pd.common.doc.content &
             doc.programlisting? &
             (pd.container_ref*) &
             (pd.member_ref*) &
-            (pd.member_group_ref*)
-            
-        pd.short_doc =
-            element short-doc { pd.short_doc.content }
-            
-        pd.short_doc.content =
-            doc.block_elements+
-            
-        pd.long_doc =
-            element long-doc { pd.long_doc.content }
-
-        pd.long_doc.content =
-            (doc.block_elements+, doc.block_section*) |
-            (doc.block_elements*, doc.block_section+)
+            (pd.sectioned_member_refs*)
+        pd.file.doc.attlist = pd.common.doc.attlist
             
         pd.container_ref =
             element container-ref { pd.container_ref.attlist, pd.container_ref.content}
-            
         pd.container_ref.content = empty
+        pd.container_ref.attlist = pd.common.idref.attribute
         
         pd.member_ref =
             element member-ref { pd.member_ref.attlist, pd.member_ref.content }
-            
         pd.member_ref.content = empty
+        pd.member_ref.attlist = pd.common.idref.attribute
         
-        pd.member_group_ref =
-            element member-group-ref { pd.member_group_ref.attlist, pd.member_group_ref.content }
-            
-        pd.member_group_ref.content =
-            pd.member_ref+
-            
+        pd.sectioned_member_refs =
+            element sectioned-member-ref { pd.sectioned_member_refs.attlist, pd.sectioned_member_refs.content }
+        pd.sectioned_member_refs.content = pd.member_ref+
+        pd.sectioned_member_refs.attlist = pd.common.doced.nofile.attlist
+        
         pd.doc.page_list =
             element page-list { pd.doc.page_list.attlist, pd.doc.page_list.content }
-            
-        pd.doc.page_list.content =
-            pd.page.doc+
-            
+        pd.doc.page_list.content = pd.page.doc+
+        pd.doc.page_list.attlist = empty
+
         pd.page.doc =
             element doc { pd.page.doc.attlist, pd.page.doc.content }
-            
         pd.page.doc.content =
             pd.common.doc.content &
             (pd.page.doc+)
-            
+        pd.page.doc.attlist = pd.common.doc.attlist
+        
         pd.doc.module_list =
             element module-list { pd.doc.module_list.attlist, pd.doc.module_list.content }
-            
-        pd.doc.module_list.content =
-            pd.module.doc+
-            
+        pd.doc.module_list.content = pd.module.doc+
+        pd.doc.module_list.attlist = empty
+    
         pd.module.doc =
             element doc { pd.module.doc.attlist, pd.module.doc.content }
-            
         pd.module.doc.content =
             pd.common.doc.content &
             (pd.container_ref*) &
             (pd.member_ref*) &
-            (pd.member_group_ref*) &
+            (pd.sectioned_member_refs*) &
             (pd.file_ref*) &
             (pd.page_ref*) &
             (pd.module.doc*)
-            
+        pd.module.doc.attlist = pd.common.doc.attlist
+        
         pd.file_ref =
             element file-ref { pd.file_ref.attlist, pd.file_ref.content }
-            
         pd.file_ref.content = empty
-        
+        pd.file_ref.attlist = pd.common.idref.attribute
+
         pd.page_ref =
             element page-ref { pd.page_ref.attlist, pd.page_ref.content }
-
         pd.page_ref.content = empty
+        pd.page_ref.attlist = pd.common.idref.attribute
         
-        pd.doc.doc_list =
-            element doc-list { pd.doc.doc_list.attlist, pd.doc.doc_list.content }
-            
-        pd.doc.doc_list.content =
-            pd.basic.doc+
-            
-        pd.basic.doc =
-            element doc { pd.basic.doc.attlist, pd.basic.doc.content }
-            
-        pd.basic.doc.content =
-            pd.common.doc.content
+        pd.doc.lang_list =
+            element lang-list { pd.doc.lang_list.attlist, pd.doc.lang_list.content }
+        pd.doc.lang_list.content = pd.lang.doc+
+        pd.doc.lang_list.attlist = empty
+        
+        pd.lang.doc =
+            element doc { pd.lang.doc.attlist, pd.lang.doc.content }
+        pd.lang.doc.content = doc.lang.ref*, pd.common.doc.content
+        pd.lang.doc.attlist = pd.common.doc.attlist
     }
     
     ## Documentation elements.
             doc.superscript |
             doc.subscript |
             doc.argument |
-            doc.style
+            doc.style |
+            doc.lang.ref
+            
+        doc.inline_data = mixed { doc.inlines* }
             
         doc.emphasis =
             element emphasis { doc.emphasis.attlist, doc.emphasis.content }
-            
-        doc.emphasis.content =
-            mixed { doc.inlines* }
-            
+        doc.emphasis.content = doc.inline_data
+        doc.emphasis.attlist = doc.common.inline.attlist
+        
         doc.anchor =
             element anchor { doc.anchor.attlist, doc.anchor.content }
-            
         doc.anchor.content = empty
+        doc.anchor.attlist =
+            doc.common.inline.attlist,
+            pd.identifier.attribute
         
         doc.literal =
             element literal {doc.literal.attlist, doc.literal.content}
-            
-        doc.literal.content =
-            mixed { doc.inlines* }
-            
+        doc.literal.content = doc.inline_data
+        doc.literal.attlist = doc.common.inline.attlist
+        
         doc.superscript =
             element superscript { doc.superscript.attlist, doc.superscript.content }
-            
-        doc.superscript.content =
-            mixed { doc.inlines* }
-            
+        doc.superscript.content = doc.inline_data
+        doc.superscript.attlist = doc.common.inline.attlist
+    
         doc.subscript =
             element subscript { doc.subscript.attlist, doc.subscript.content }
-    
-        doc.subscript.content =
-            mixed { doc.inlines* }
-            
+        doc.subscript.content = doc.inline_data
+        doc.subscript.attlist = doc.common.inline.attlist
+        
         doc.argument =
             element argument { doc.argument.attlist, doc.argument.content }
-
-        doc.argument.content =
-            mixed { doc.inlines* }
-            
+        doc.argument.content = doc.inline_data
+        doc.argument.attlist = doc.common.inline.attlist
+        
         doc.style =
             element style { doc.style.attlist, doc.style.content }
-            
-        doc.style.content =
-            mixed { doc.inlines* }
-            
+        doc.style.content = doc.inline_data
+        doc.style.attlist =
+            doc.common.inline.attlist,
+            doc.style.style.attribute
+
+        doc.lang.ref =
+            element ref { doc.lang.ref.attlist, doc.lang.ref.content }
+        doc.lang.ref.content = empty
+        doc.lang.ref.attlist = pd.common.lang_ref.attribute
+        
         doc.title =
             element title { doc.title.attlist, doc.title.content }
-            
-        doc.title.content =
-            mixed { doc.inlines* }
-            
+        doc.title.content = doc.inline_data
+        doc.title.attlist = doc.common.inline.attlist
+        
         doc.block_elements =
             doc.para |
             doc.formal_para |
             doc.warning |
             doc.caution |
             doc.orderedlist |
-            doc.itemizedlist
+            doc.itemizedlist |
+            doc.return_value |
+            doc.param_list |
+            doc.throw_list
             
         doc.para =
             element para { doc.para.attlist, doc.para.content }
-            
-        doc.para.content =
-            mixed { doc.inlines* }
-            
+        doc.para.content = doc.inline_data
+        doc.para.attlist = doc.common.block.attlist
+        
         doc.formal_para =
             element formal_para { doc.formal_para.attlist, doc.formal_para.content }
-            
-        doc.formal_para.content =
-            doc.title, doc.para
-            
+        doc.formal_para.content = doc.title, doc.para
+        doc.formal_para.attlist = doc.common.block.attlist, pd.identifier.attribute?
+
         doc.note =
             element note { doc.note.attlist, doc.note.content }
-            
-        doc.note.content =
-            doc.title?, doc.block_elements+
-            
+        doc.note.content = doc.title?, doc.block_elements+
+        doc.note.attlist = doc.common.block.attlist
+
         doc.important =
             element important { doc.important.attlist, doc.important.content }
-            
-        doc.important.content =
-            doc.title?, doc.block_elements+
-            
+        doc.important.content = doc.title?, doc.block_elements+
+        doc.important.attlist = doc.common.block.attlist
+
         doc.warning =
             element warning { doc.warning.attlist, doc.warning.content }
-            
-        doc.warning.content =
-            doc.title?, doc.block_elements+
-            
+        doc.warning.content = doc.title?, doc.block_elements+
+        doc.warning.attlist = doc.common.block.attlist
+
         doc.caution =
             element caution { doc.caution.attlist, doc.caution.content }
-            
-        doc.caution.content =
-            doc.title?, doc.block_elements+
-            
+        doc.caution.content = doc.title?, doc.block_elements+
+        doc.caution.attlist = doc.common.block.attlist
+        
         doc.orderedlist =
             element orderedlist { doc.orderedlist.attlist, doc.orderedlist.content }
-            
-        doc.orderedlist.content =
-            doc.listitem+
-        
+        doc.orderedlist.content = doc.listitem+
+        doc.orderedlist.attlist = doc.common.block.attlist
+
         doc.itemizedlist =
             element itemizedlist { doc.itemizedlist.attlist, doc.itemizedlist.content }
-
-        doc.itemizedlist =
-            doc.listitem+
-            
+        doc.itemizedlist.content = doc.listitem+
+        doc.itemizedlist.attlist = doc.common.block.attlist
+    
         doc.listitem =
             element listitem { doc.listitem.attlist, doc.listitem.content }
-            
-        doc.listitem.content =
-            doc.block_elements+
-            
-        doc.block_section =
-            text
-
+        doc.listitem.content = doc.block_elements+            
+        doc.listitem.attlist = empty
+        
+        doc.large_layout =
+            (doc.block_elements+, doc.block_section*) |
+            (doc.block_elements*, doc.block_section+)
+        
         doc.programlisting =
             element programlisting { doc.programlisting.attlist, doc.programlisting.content }
-            
-        doc.programlisting.content =
-            text
+        doc.programlisting.content = text
+        doc.programlisting.attlist = empty
+        
+        doc.param_list =
+            element param-list { doc.param_list.attlist, doc.param_list.content }
+        doc.param_list.content = doc.param+
+        doc.param_list.attlist = empty
+        
+        doc.param =
+            element param { doc.param.attlist, doc.param.content }
+        doc.param.content = doc.block_elements+
+        doc.param.attlist = pd.identifier.attribute, pd.common.name.attribute
+        
+        doc.throw_list =
+            element throw-list { doc.throw_list.attlist, doc.throw_list.content }
+        doc.throw_list.content = doc.throw+
+        doc.throw_list.attlist = empty
+        
+        doc.throw =
+            element throw { doc.throw.attlist, doc.throw.content }
+        doc.throw.content = doc.throw_object, doc.block_elements+
+        doc.throw.attlist = empty
+        
+        doc.throw_object =
+            element throw-object { doc.throw_object.attlist, doc.throw_object.content }
+        doc.throw_object.content = doc.lang_string
+        doc.throw_object.attlist = empty
+        
+        doc.return_value =
+            element return_value { doc.return_value.attlist, doc.return_value.content }
+        doc.return_value.content = doc.block_elements+
+        doc.return_value.attlist = pd.identifier.attribute
+        
+        doc.block_section = 
+            element section { doc.block_section.attlist, doc.block_section.content }
+        doc.block_section.content = doc.title, doc.large_layout
+        doc.block_section.attlist = doc.common.block.attlist, pd.identifier.attribute?
+        
+        doc.lang_string = mixed { doc.lang.ref* }
     }
 }
     
 
-
-## Attributes
+## Common Attribute lists
 div
 {
-    pd.codedocs.attlist =
-        pd.codedocs.language.attribute, pd.codedocs.version.attribute,
-        pd.codedocs.tool_version.attribute?
+    pd.common.language.attlist =
+        pd.common.file_ref.attribute?, pd.common.doced.nofile.attlist
         
+    pd.common.doced.nofile.attlist =
+        pd.common.name.attribute, pd.common.doced.global.attlist
+        
+    pd.common.doced.global.attlist =
+        pd.identifier.attribute, pd.common.doc_ref.attribute?
+        
+    pd.common.doc.attlist =
+        pd.identifier.attribute, pd.common.name.attribute
+}
+
+
+## Main attributes
+div
+{
     pd.codedocs.language.attribute =
         attribute language { text }
         
     pd.codedocs.version.attribute =
-        attribute version { text }
+        attribute version { "0.9" }
     
     pd.codedocs.tool_version.attribute =
         attribute tool-version{ text }
         
-    pd.info.attlist =
-        pd.info.name.attribute, pd.info.version.attribute
-        
     pd.info.name.attribute =
         attribute name { text }
     
     pd.info.version.attribute =
         attribute version { text }
         
-    pd.lang_ref.attlist =
-        pd.common.lang_ref.attribute
-        
-    pd.common.language.attlist =
-        pd.common.file_ref.attribute?, pd.common.doced.nofile.attlist
-        
-    pd.common.doced.nofile.attlist =
-        pd.identifier.attribute, pd.common.name.attribute, 
-        pd.common.doc_ref.attribute?
-        
-    pd.container.attlist = pd.common.language.attlist, pd.container.kind.attribute
-    
     pd.identifier.attribute =
-        attribute xml:id { text }
+        attribute xml:id { xsd:ID }
     
     pd.container.name.attribute =
         attribute name { text }
     pd.container.kind.attribute =
         attribute kind { "class" | "struct" | "interface" | "union" | "namespace" }
         
-    pd.container.parent.attlist =
-        pd.common.idref.attribute
+    pd.global.container.kind.attribute =
+        attribute kind { "namespace" }
         
     pd.linkage.kind.attribute =
         attribute kind { "public" | "protected" | "private" | "virtual" }
         
-    pd.container.linkage.attlist =
-        pd.linkage.kind.attribute
-
-    pd.container.child.attlist =
-        pd.common.idref.attribute
-        
-    pd.template_list.attlist = empty
-
-    pd.template.attlist =
-        pd.common.name.attribute?
-        
-    pd.template.type.attlist = empty
-    
-    pd.template.default.attlist = empty
-    
-    pd.property_list.attlist = empty
-
-    pd.property.attlist =
-        pd.property.kind.attribute
-        
     pd.property.kind.attribute =
         attribute kind {
             "abstract" |
             "protected-internal"
         }
         
-    pd.member_section.attlist =
-        pd.common.language.attlist
-    
-    pd.member.attlist =
-        pd.common.language.attlist, pd.member.kind.attribute, pd.member.overrides.attribute
-        
     pd.member.kind.attribute =
         attribute kind {
             "variable" |
     pd.member.overrides.attribute =
         attribute overrides { xsd:IDREF }
         
-    pd.member.type.attlist =
-        pd.common.doc_ref.attribute?
-
-    pd.param_list.attlist = empty
-    
-    pd.param.attlist =
-        pd.param.name.attribute?, pd.common.doc_ref.attribute?
-        
     pd.param.name.attribute =
         attribute name { text }
-        
-    pd.param.type.attlist =
-        pd.common.doc_ref.attribute?
-        
-    pd.param.default.attlist = empty
-    
-    pd.param.array.attlist = empty
-    
-    pd.enum_value_list.attlist = empty
-        
-    pd.enum_value.attlist =
-        pd.common.doced.nofile.attlist
-        
-    pd.enum.value.attlist = empty
-        
-    pd.content.doc.attlist =
-        pd.identifier.attribute, pd.common.name.attribute
-        
-    pd.file.doc.attlist =
-        pd.content.doc.attlist
-        
-    pd.container_ref.attlist =
-        pd.common.idref.attribute
-        
-    pd.member_ref.attlist =
-        pd.common.idref.attribute
-        
-    pd.member_group_ref.attlist =
-        pd.common.doced.nofile.attlist
-        
-    pd.doc.page_list.attlist = empty
-    
-    pd.page.doc.attlist =
-        pd.content.doc.attlist
-        
-    pd.doc.module_list.attlist = empty
-    
-    pd.module.doc.attlist =
-        pd.content.doc.attlist
-        
-    pd.file_ref.attlist =
-        pd.common.idref.attribute
-        
-    pd.page_ref.attlist =
-        pd.common.idref.attribute
-        
-    pd.doc.doc_list.attlist = empty
-    
-    pd.basic.doc.attlist =
-        pd.content.doc.attlist
 }
 
 ## Documentation attributes
 div
 {
-    doc.common.attlist =
-        doc.role.attribute?
+    doc.common.attlist = doc.role.attribute?
         
-    doc.common.inline.attlist =
-        doc.common.attlist,
-        empty
+    doc.common.inline.attlist = doc.common.attlist
     
+    doc.common.block.attlist = doc.common.attlist
+
     doc.role.attribute =
         attribute role { text }
         
-    doc.emphasis.attlist =
-        doc.common.inline.attlist
-        
-    doc.anchor.attlist =
-        doc.common.inline.attlist,
-        pd.identifier.attribute
-        
-    doc.literal.attlist =
-        doc.common.inline.attlist
-        
-    doc.superscript.attlist =
-        doc.common.inline.attlist
-    
-    doc.subscript.attlist =
-        doc.common.inline.attlist
-        
-    doc.argument.attlist =
-        doc.common.inline.attlist
-        
-    doc.style.attlist =
-        doc.common.inline.attlist,
-        doc.style.style.attribute
-        
     doc.style.style.attribute =
         attribute style
         {
             "monospace"
         }
         
-    doc.title.attlist =
-        doc.common.inline.attlist
-        
-    doc.common.block.attlist =
-        doc.common.attlist,
-        empty
-        
-    doc.para.attlist =
-        doc.common.block.attlist
-        
-    doc.formal_para.attlist =
-        doc.common.block.attlist
-
-    doc.note.attlist =
-        doc.common.block.attlist
-
-    doc.important.attlist =
-        doc.common.block.attlist
-
-    doc.warning.attlist =
-        doc.common.block.attlist
-
-    doc.caution.attlist =
-        doc.common.block.attlist
-        
-    doc.orderedlist.attlist =
-        doc.common.block.attlist
-
-    doc.itemizedlist.attlist =
-        doc.common.block.attlist
-    
-    doc.listitem.attlist =
-        empty
-            
-
-        
-    doc.programlisting.attlist = empty
-    
-    
 }
 
 

Design/ProgDocFormatTest.xml

+<?xml version="1.0" encoding="UTF-8"?>
+<?oxygen RNGSchema="ProgDoc.rnc" type="compact"?>
+<codedocs xmlns="https://bitbucket.org/alfonse/doxygen-progdoc/overview" language="cpp" version="0.9">
+    <info version="1.0" name="My code documentation"/>
+    <container xml:id="the_one_global_namespace" kind="namespace">
+        <container name="Bisco" xml:id="class_Bisco" kind="class">
+            <member name="Bisco" xml:id="Bisco_Bisco" kind="function">
+                <param-list>
+                    <param name="pDude">
+                        <type>void *</type>
+                    </param>
+                    <param name="eValue">
+                        <type><ref lang-ref="Bisco.SomeEnum"/></type>
+                    </param>
+                </param-list>
+                <type>void</type>
+                <property-list>
+                    <property kind="public"/>
+                    <property kind="constructor"/>
+                </property-list>
+            </member>
+            <member name="SomeEnum" xml:id="Bisco.SomeEnum" kind="enumeration">
+                <enum-value-list>
+                    <enum-value name="BISCO_1" xml:id="Bisco.SomeEnum.BISCO_1" doc-ref="ed00004">
+                        <value>0x001</value>
+                    </enum-value>
+                </enum-value-list>
+            </member>
+        </container>
+    </container>
+    <lang-list>
+        <doc xml:id="ed00004" name="BISCO_1">
+            <ref lang-ref="Bisco.SomeEnum.BISCO_1"/>
+            <short-doc>
+                <para>This is an enumerator.</para>
+            </short-doc>
+        </doc>
+        <doc name="SomeEnum" xml:id="ed00003">
+            <ref lang-ref="Bisco.SomeEnum"/>
+            <short-doc>
+                <para>An enumeration.</para>
+            </short-doc>
+        </doc>
+        <doc name="Bisco" xml:id="ed00002">
+            <ref lang-ref="class_Bisco"/>
+            <long-doc>
+                <para>This class is used to Bisco people.</para>
+            </long-doc>
+        </doc>
+        <doc name="Bisco" xml:id="ed00002a">
+            <ref lang-ref="Bisco_Bisco"/>
+            <long-doc>
+                <para>Create a <ref lang-ref="class_Bisco"/> object.</para>
+                <throw-list>
+                    <throw>
+                        <throw-object><ref lang-ref="class_Bisco"/></throw-object>
+                        <para>When something terrible happens.</para>
+                    </throw>
+                </throw-list>
+            </long-doc>
+        </doc>
+    </lang-list>
+    
+</codedocs>
 Schema tasks:
 
-* Add block elements for throws, param, and return values.
 * Add friend definitions to the language section.
+* Add generic references to arbitrary things, ala "link".
 * Add ToDo elements.
-
-
+* Document the schema.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.