diff options
Diffstat (limited to 'lv2specgen')
45 files changed, 6604 insertions, 0 deletions
diff --git a/lv2specgen/DTD/xhtml-attribs-1.mod b/lv2specgen/DTD/xhtml-attribs-1.mod new file mode 100644 index 0000000..dbfe42e --- /dev/null +++ b/lv2specgen/DTD/xhtml-attribs-1.mod @@ -0,0 +1,142 @@ +<!-- ...................................................................... --> +<!-- XHTML Common Attributes Module ...................................... --> +<!-- file: xhtml-attribs-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-attribs-1.mod,v 1.4 2008/10/08 21:02:30 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-attribs-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Common Attributes + + This module declares many of the common attributes for the XHTML DTD. + %NS.decl.attrib; is declared in the XHTML Qname module. + + Note that this file was extended in XHTML Modularization 1.1 to + include declarations of "global" versions of the attribute collections. + The global versions of the attributes are for use on elements in other + namespaces. The global version of "common" includes the xmlns declaration + for the prefixed version of the xhtml namespace. If you are only using a + specific attribute or an individual attribute collection, you must also + include the XHTML.xmlns.attrib.prefixed PE on your elements. +--> + +<!ENTITY % id.attrib + "id ID #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.id.attrib + "%XHTML.prefix;:id ID #IMPLIED" +> +]]> + +<!ENTITY % class.attrib + "class NMTOKENS #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.class.attrib + "%XHTML.prefix;:class NMTOKENS #IMPLIED" +> +]]> + +<!ENTITY % title.attrib + "title %Text.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.title.attrib + "%XHTML.prefix;:title %Text.datatype; #IMPLIED" +> +]]> + +<!ENTITY % Core.extra.attrib "" > + +<!ENTITY % Core.attrib + "%XHTML.xmlns.attrib; + %id.attrib; + %class.attrib; + %title.attrib; + xml:space ( preserve ) #FIXED 'preserve' + %Core.extra.attrib;" +> + +<!ENTITY % XHTML.global.core.extra.attrib "" > + +<![%XHTML.global.attrs.prefixed;[ + +<!ENTITY % XHTML.global.core.attrib + "%XHTML.global.id.attrib; + %XHTML.global.class.attrib; + %XHTML.global.title.attrib; + %XHTML.global.core.extra.attrib;" +> +]]> + +<!ENTITY % XHTML.global.core.attrib "" > + + +<!ENTITY % lang.attrib + "xml:lang %LanguageCode.datatype; #IMPLIED" +> + +<![%XHTML.bidi;[ +<!ENTITY % dir.attrib + "dir ( ltr | rtl ) #IMPLIED" +> + +<!ENTITY % I18n.attrib + "%dir.attrib; + %lang.attrib;" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY XHTML.global.i18n.attrib + "%XHTML.prefix;:dir ( ltr | rtl ) #IMPLIED + %lang.attrib;" +> +]]> +<!ENTITY XHTML.global.i18n.attrib "" > + +]]> +<!ENTITY % I18n.attrib + "%lang.attrib;" +> +<!ENTITY % XHTML.global.i18n.attrib + "%lang.attrib;" +> + +<!ENTITY % Common.extra.attrib "" > +<!ENTITY % XHTML.global.common.extra.attrib "" > + +<!-- intrinsic event attributes declared previously +--> +<!ENTITY % Events.attrib "" > + +<!ENTITY % XHTML.global.events.attrib "" > + +<!ENTITY % Common.attrib + "%Core.attrib; + %I18n.attrib; + %Events.attrib; + %Common.extra.attrib;" +> + +<!ENTITY % XHTML.global.common.attrib + "%XHTML.xmlns.attrib.prefixed; + %XHTML.global.core.attrib; + %XHTML.global.i18n.attrib; + %XHTML.global.events.attrib; + %XHTML.global.common.extra.attrib;" +> + +<!-- end of xhtml-attribs-1.mod --> diff --git a/lv2specgen/DTD/xhtml-base-1.mod b/lv2specgen/DTD/xhtml-base-1.mod new file mode 100644 index 0000000..ba47b40 --- /dev/null +++ b/lv2specgen/DTD/xhtml-base-1.mod @@ -0,0 +1,53 @@ +<!-- ...................................................................... --> +<!-- XHTML Base Element Module ........................................... --> +<!-- file: xhtml-base-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-base-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-base-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Base element + + base + + This module declares the base element type and its attributes, + used to define a base URI against which relative URIs in the + document will be resolved. + + Note that this module also redeclares the content model for + the head element to include the base element. +--> + +<!-- base: Document Base URI ........................... --> + +<!ENTITY % base.element "INCLUDE" > +<![%base.element;[ +<!ENTITY % base.content "EMPTY" > +<!ENTITY % base.qname "base" > +<!ELEMENT %base.qname; %base.content; > +<!-- end of base.element -->]]> + +<!ENTITY % base.attlist "INCLUDE" > +<![%base.attlist;[ +<!ATTLIST %base.qname; + %XHTML.xmlns.attrib; + href %URI.datatype; #REQUIRED +> +<!-- end of base.attlist -->]]> + +<!ENTITY % head.content + "( %HeadOpts.mix;, + ( ( %title.qname;, %HeadOpts.mix;, ( %base.qname;, %HeadOpts.mix; )? ) + | ( %base.qname;, %HeadOpts.mix;, ( %title.qname;, %HeadOpts.mix; ))))" +> + +<!-- end of xhtml-base-1.mod --> diff --git a/lv2specgen/DTD/xhtml-basic-table-1.mod b/lv2specgen/DTD/xhtml-basic-table-1.mod new file mode 100644 index 0000000..acbd046 --- /dev/null +++ b/lv2specgen/DTD/xhtml-basic-table-1.mod @@ -0,0 +1,167 @@ +<!-- ....................................................................... --> +<!-- XHTML Basic Table Module ............................................. --> +<!-- file: xhtml-basic-table-1.mod + + This is XHTML Basic, a proper subset of XHTML. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-basic-table-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-basic-table-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Basic Tables + + table, caption, tr, th, td + + This table module declares elements and attributes defining + a table model based fundamentally on features found in the + widely-deployed HTML 3.2 table model. While this module + mimics the content model and table attributes of HTML 3.2 + tables, the element types declared herein also includes all + HTML 4 common and most of the HTML 4 table attributes. +--> + +<!-- declare qualified element type names: +--> +<!ENTITY % table.qname "table" > +<!ENTITY % caption.qname "caption" > +<!ENTITY % tr.qname "tr" > +<!ENTITY % th.qname "th" > +<!ENTITY % td.qname "td" > + +<!-- horizontal alignment attributes for cell contents +--> +<!ENTITY % CellHAlign.attrib + "align ( left + | center + | right ) #IMPLIED" +> + +<!-- vertical alignment attributes for cell contents +--> +<!ENTITY % CellVAlign.attrib + "valign ( top + | middle + | bottom ) #IMPLIED" +> + +<!-- scope is simpler than axes attribute for common tables +--> +<!ENTITY % scope.attrib + "scope ( row | col ) #IMPLIED" +> + +<!-- table: Table Element .............................. --> + +<!ENTITY % table.element "INCLUDE" > +<![%table.element;[ +<!ENTITY % table.content + "( %caption.qname;?, %tr.qname;+ )" +> +<!ELEMENT %table.qname; %table.content; > +<!-- end of table.element -->]]> + +<!ENTITY % table.attlist "INCLUDE" > +<![%table.attlist;[ +<!ATTLIST %table.qname; + %Common.attrib; + summary %Text.datatype; #IMPLIED + width %Length.datatype; #IMPLIED +> +<!-- end of table.attlist -->]]> + +<!-- caption: Table Caption ............................ --> + +<!ENTITY % caption.element "INCLUDE" > +<![%caption.element;[ +<!ENTITY % caption.content + "( #PCDATA | %Inline.mix; )*" +> +<!ELEMENT %caption.qname; %caption.content; > +<!-- end of caption.element -->]]> + +<!ENTITY % caption.attlist "INCLUDE" > +<![%caption.attlist;[ +<!ATTLIST %caption.qname; + %Common.attrib; +> +<!-- end of caption.attlist -->]]> + +<!-- tr: Table Row ..................................... --> + +<!ENTITY % tr.element "INCLUDE" > +<![%tr.element;[ +<!ENTITY % tr.content "( %th.qname; | %td.qname; )+" > +<!ELEMENT %tr.qname; %tr.content; > +<!-- end of tr.element -->]]> + +<!ENTITY % tr.attlist "INCLUDE" > +<![%tr.attlist;[ +<!ATTLIST %tr.qname; + %Common.attrib; + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of tr.attlist -->]]> + +<!-- th: Table Header Cell ............................. --> + +<!-- th is for header cells, td for data, + but for cells acting as both use td +--> + +<!ENTITY % th.element "INCLUDE" > +<![%th.element;[ +<!ENTITY % th.content + "( #PCDATA | %FlowNoTable.mix; )*" +> +<!ELEMENT %th.qname; %th.content; > +<!-- end of th.element -->]]> + +<!ENTITY % th.attlist "INCLUDE" > +<![%th.attlist;[ +<!ATTLIST %th.qname; + %Common.attrib; + abbr %Text.datatype; #IMPLIED + axis CDATA #IMPLIED + headers IDREFS #IMPLIED + %scope.attrib; + rowspan %Number.datatype; '1' + colspan %Number.datatype; '1' + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of th.attlist -->]]> + +<!-- td: Table Data Cell ............................... --> + +<!ENTITY % td.element "INCLUDE" > +<![%td.element;[ +<!ENTITY % td.content + "( #PCDATA | %FlowNoTable.mix; )*" +> +<!ELEMENT %td.qname; %td.content; > +<!-- end of td.element -->]]> + +<!ENTITY % td.attlist "INCLUDE" > +<![%td.attlist;[ +<!ATTLIST %td.qname; + %Common.attrib; + abbr %Text.datatype; #IMPLIED + axis CDATA #IMPLIED + headers IDREFS #IMPLIED + %scope.attrib; + rowspan %Number.datatype; '1' + colspan %Number.datatype; '1' + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of td.attlist -->]]> + +<!-- end of xhtml-basic-table-1.mod --> diff --git a/lv2specgen/DTD/xhtml-basic11-model-1.mod b/lv2specgen/DTD/xhtml-basic11-model-1.mod new file mode 100644 index 0000000..d2a59e2 --- /dev/null +++ b/lv2specgen/DTD/xhtml-basic11-model-1.mod @@ -0,0 +1,169 @@ +<!-- ....................................................................... --> +<!-- XHTML Basic 1.1 Document Model Module .................................... --> +<!-- file: xhtml-basic11-model-1.mod + + This is XHTML Basic, a proper subset of XHTML. + Copyright 1998-2007 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-basic11-model-1.mod,v 1.6 2009/11/18 19:25:00 smccarro Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML Basic 1.1 Document Model 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-basic11-model-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- XHTML Basic Document Model + + This module describes the groupings of elements that make up + common content models for XHTML elements. +--> + +<!-- Optional Elements in head .............. --> + +<!ENTITY % HeadOpts.mix + "( %script.qname; | %style.qname; | %meta.qname; + | %link.qname; | %object.qname; )*" > + +<!-- script and noscript are used to contain scripts + and alternative content +--> +<!ENTITY % Script.class "| %script.qname; | %noscript.qname;" > + +<!-- Miscellaneous Elements ................. --> + +<!ENTITY % Misc.extra "" > + +<!-- These elements are neither block nor inline, and can + essentially be used anywhere in the document body. +--> +<!ENTITY % Misc.class + "%Script.class; + %Misc.extra;" +> + +<!-- Inline Elements ........................ --> + +<!ENTITY % InlStruct.class "%br.qname; | %span.qname;" > + +<!ENTITY % InlPhras.class + "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname; + | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname; + | %abbr.qname; | %acronym.qname; | %q.qname;" > + +<!ENTITY % InlPres.class + "| %tt.qname; | %i.qname; | %b.qname; | %big.qname; + | %small.qname; | %sub.qname; | %sup.qname;" > + +<!ENTITY % I18n.class "" > + +<!ENTITY % Anchor.class "| %a.qname;" > + +<!ENTITY % InlSpecial.class "| %img.qname; | %object.qname;" > + +<!ENTITY % InlForm.class + "| %input.qname; | %select.qname; | %textarea.qname; + | %label.qname; | %button.qname;" > + +<!ENTITY % Inline.extra "" > + +<!ENTITY % Inline.class + "%InlStruct.class; + %InlPhras.class; + %InlPres.class; + %Anchor.class; + %InlSpecial.class; + %InlForm.class; + %Inline.extra;" +> + +<!ENTITY % InlNoAnchor.class + "%InlStruct.class; + %InlPhras.class; + %InlPres.class; + %InlSpecial.class; + %InlForm.class; + %Inline.extra;" +> + +<!ENTITY % InlNoAnchor.mix + "%InlNoAnchor.class; + %Misc.class;" +> + +<!ENTITY % Inline.mix + "%Inline.class; + %Misc.class;" +> + +<!-- Block Elements ......................... --> + +<!ENTITY % Heading.class + "%h1.qname; | %h2.qname; | %h3.qname; + | %h4.qname; | %h5.qname; | %h6.qname;" +> +<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" > + +<!ENTITY % Table.class "| %table.qname;" > + +<!ENTITY % Form.class "| %form.qname;" > + +<!ENTITY % Fieldset.class "| %fieldset.qname;" > + +<!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" > + +<!ENTITY % BlkPhras.class + "| %pre.qname; | %blockquote.qname; | %address.qname;" +> + +<!ENTITY % BlkPres.class "| %hr.qname;" > + +<!ENTITY % BlkSpecial.class + "%Table.class; + %Form.class; + %Fieldset.class;" +> + +<!ENTITY % Block.extra "" > + +<!ENTITY % Block.class + "%BlkStruct.class; + %BlkPhras.class; + %BlkPres.class; + %BlkSpecial.class; + %Block.extra;" +> + +<!ENTITY % Block.mix + "%Heading.class; + | %List.class; + | %Block.class; + %Misc.class;" +> + +<!-- All Content Elements ................... --> + +<!-- declares all content except tables +--> +<!ENTITY % FlowNoTable.mix + "%Heading.class; + | %List.class; + | %BlkStruct.class; + %BlkPhras.class; + %Form.class; + %Block.extra; + | %Inline.class; + %Misc.class;" +> + +<!ENTITY % Flow.mix + "%Heading.class; + | %List.class; + | %Block.class; + | %Inline.class; + %Misc.class;" +> + +<!-- end of xhtml-basic11-model-1.mod --> diff --git a/lv2specgen/DTD/xhtml-basic11.dtd b/lv2specgen/DTD/xhtml-basic11.dtd new file mode 100644 index 0000000..ea7b3d6 --- /dev/null +++ b/lv2specgen/DTD/xhtml-basic11.dtd @@ -0,0 +1,221 @@ +<!-- XHTML Basic 1.1 DTD ...................................................... --> +<!-- file: xhtml-basic10.dtd --> + +<!-- XHTML Basic 1.1 DTD + + This is XHTML Basic, a proper subset of XHTML. + + The Extensible HyperText Markup Language (XHTML) + Copyright 1998-2005 World Wide Web Consortium + (Massachusetts Institute of Technology, European Research Consortium + for Informatics and Mathematics, Keio University). + All Rights Reserved. + + Permission to use, copy, modify and distribute the XHTML Basic DTD + and its accompanying documentation for any purpose and without fee is + hereby granted in perpetuity, provided that the above copyright notice + and this paragraph appear in all copies. The copyright holders make + no representation about the suitability of the DTD for any purpose. + + It is provided "as is" without expressed or implied warranty. + + Editors: Murray M. Altheim <mailto:altheim@eng.sun.com> + Peter Stark <mailto:Peter.Stark@ecs.ericsson.se> + Revision: $Id: xhtml-basic11.dtd,v 1.1 2007-03-16 04:00:58 ot Exp $ SMI + +--> +<!-- This is the driver file for version 1.1 of the XHTML Basic DTD. + + This DTD is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC: "-//W3C//DTD XHTML Basic 1.1//EN" + SYSTEM: "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd" +--> +<!ENTITY % XHTML.version "-//W3C//DTD XHTML Basic 1.1//EN" > + +<!-- Use this URI to identify the default namespace: + + "http://www.w3.org/1999/xhtml" + + See the Qualified Names module for information + on the use of namespace prefixes in the DTD. +--> +<!ENTITY % NS.prefixed "IGNORE" > +<!ENTITY % XHTML.prefix "" > + +<!-- Reserved for use with the XLink namespace: +--> +<!ENTITY % XLINK.xmlns "" > +<!ENTITY % XLINK.xmlns.attrib "" > + +<!-- For example, if you are using XHTML Basic 1.1 directly, use + the public identifier in the DOCTYPE declaration, with the namespace + declaration on the document element to identify the default namespace: + + <?xml version="1.0"?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" + "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd" > + <html xmlns="http://www.w3.org/1999/xhtml" + xml:lang="en" > + ... + </html> +--> + +<!-- reserved for future use with document profiles --> +<!ENTITY % XHTML.profile "" > + +<!-- Bidirectional Text features + This feature-test entity is used to declare elements + and attributes used for bidirectional text support. +--> +<!ENTITY % XHTML.bidi "IGNORE" > + +<?doc type="doctype" role="title" { XHTML Basic 1.1 } ?> + +<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> + +<!ENTITY % xhtml-events.module "INCLUDE" > +<!ENTITY % xhtml-bdo.module "%XHTML.bidi;" > + +<!ENTITY % xhtml-model.mod + PUBLIC "-//W3C//ENTITIES XHTML Basic 1.1 Document Model 1.0//EN" + "xhtml-basic11-model-1.mod" > + +<!ENTITY % xhtml-framework.mod + PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN" + "xhtml-framework-1.mod" > +%xhtml-framework.mod; + +<!ENTITY % pre.content + "( #PCDATA + | %InlStruct.class; + %InlPhras.class; + %Anchor.class; + %Inline.extra; )*" +> + +<!ENTITY % xhtml-text.mod + PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN" + "xhtml-text-1.mod" > +%xhtml-text.mod; + +<!ENTITY % xhtml-hypertext.mod + PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN" + "xhtml-hypertext-1.mod" > +%xhtml-hypertext.mod; + +<!ENTITY % xhtml-list.mod + PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN" + "xhtml-list-1.mod" > +%xhtml-list.mod; + +<!-- Add in the value attribute to the li element --> +<!ATTLIST %li.qname; + value %Number.datatype; #IMPLIED +> + +<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> + +<!-- Scripting Module ........................................... --> +<!ENTITY % xhtml-script.module "INCLUDE" > +<![%xhtml-script.module;[ +<!ENTITY % xhtml-script.mod + PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN" + "xhtml-script-1.mod" > +%xhtml-script.mod;]]> + +<!-- Style Sheets Module ......................................... --> +<!ENTITY % xhtml-style.module "INCLUDE" > +<![%xhtml-style.module;[ +<!ENTITY % xhtml-style.mod + PUBLIC "-//W3C//ELEMENTS XHTML Style Sheets 1.0//EN" + "xhtml-style-1.mod" > +%xhtml-style.mod;]]> + +<!-- Image Module ............................................... --> +<!ENTITY % xhtml-image.module "INCLUDE" > +<![%xhtml-image.module;[ +<!ENTITY % xhtml-image.mod + PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN" + "xhtml-image-1.mod" > +%xhtml-image.mod;]]> + +<!-- Tables Module ............................................... --> +<!ENTITY % xhtml-table.module "INCLUDE" > +<![%xhtml-table.module;[ +<!ENTITY % xhtml-table.mod + PUBLIC "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN" + "xhtml-basic-table-1.mod" > +%xhtml-table.mod;]]> + +<!-- Forms Module ............................................... --> +<!ENTITY % xhtml-form.module "INCLUDE" > +<![%xhtml-form.module;[ +<!ENTITY % xhtml-form.mod + PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN" + "xhtml-form-1.mod" > +%xhtml-form.mod;]]> + +<!-- Link Element Module ........................................ --> +<!ENTITY % xhtml-link.module "INCLUDE" > +<![%xhtml-link.module;[ +<!ENTITY % xhtml-link.mod + PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN" + "xhtml-link-1.mod" > +%xhtml-link.mod;]]> + +<!-- Document Metainformation Module ............................ --> +<!ENTITY % xhtml-meta.module "INCLUDE" > +<![%xhtml-meta.module;[ +<!ENTITY % xhtml-meta.mod + PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN" + "xhtml-meta-1.mod" > +%xhtml-meta.mod;]]> + +<!-- Base Element Module ........................................ --> +<!ENTITY % xhtml-base.module "INCLUDE" > +<![%xhtml-base.module;[ +<!ENTITY % xhtml-base.mod + PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN" + "xhtml-base-1.mod" > +%xhtml-base.mod;]]> + +<!-- Param Element Module ....................................... --> +<!ENTITY % xhtml-param.module "INCLUDE" > +<![%xhtml-param.module;[ +<!ENTITY % xhtml-param.mod + PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN" + "xhtml-param-1.mod" > +%xhtml-param.mod;]]> + +<!-- Embedded Object Module ..................................... --> +<!ENTITY % xhtml-object.module "INCLUDE" > +<![%xhtml-object.module;[ +<!ENTITY % xhtml-object.mod + PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN" + "xhtml-object-1.mod" > +%xhtml-object.mod;]]> + +<!-- Inputmode Attribute Module .................................. --> +<!ENTITY % xhtml-inputmode.module "INCLUDE" > +<![%xhtml-inputmode.module;[ +<!ENTITY % xhtml-inputmode.mod + PUBLIC "-//W3C//ELEMENTS XHTML Inputmode 1.0//EN" + "xhtml-inputmode-1.mod" > +%xhtml-inputmode.mod;]]> + +<!-- Target Attribute Module .................................... --> +<!ENTITY % xhtml-target.module "INCLUDE" > +<![%xhtml-target.module;[ +<!ENTITY % xhtml-target.mod + PUBLIC "-//W3C//ELEMENTS XHTML Target 1.0//EN" + "xhtml-target-1.mod" > +%xhtml-target.mod;]]> + + +<!ENTITY % xhtml-struct.mod + PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN" + "xhtml-struct-1.mod" > +%xhtml-struct.mod; + +<!-- end of XHTML Basic 1.1 DTD ........................................... --> diff --git a/lv2specgen/DTD/xhtml-bdo-1.mod b/lv2specgen/DTD/xhtml-bdo-1.mod new file mode 100644 index 0000000..f5f093f --- /dev/null +++ b/lv2specgen/DTD/xhtml-bdo-1.mod @@ -0,0 +1,47 @@ +<!-- ...................................................................... --> +<!-- XHTML BDO Element Module ............................................. --> +<!-- file: xhtml-bdo-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-bdo-1.mod,v 1.4 2008/10/08 21:02:30 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML BDO Element 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-bdo-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Bidirectional Override (bdo) Element + + This modules declares the element 'bdo', used to override the + Unicode bidirectional algorithm for selected fragments of text. + + DEPENDENCIES: + Relies on the conditional section keyword %XHTML.bidi; declared + as "INCLUDE". Bidirectional text support includes both the bdo + element and the 'dir' attribute. +--> + +<!ENTITY % bdo.element "INCLUDE" > +<![%bdo.element;[ +<!ENTITY % bdo.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % bdo.qname "bdo" > +<!ELEMENT %bdo.qname; %bdo.content; > +<!-- end of bdo.element -->]]> + +<!ENTITY % bdo.attlist "INCLUDE" > +<![%bdo.attlist;[ +<!ATTLIST %bdo.qname; + %Core.attrib; + xml:lang %LanguageCode.datatype; #IMPLIED + dir ( ltr | rtl ) #REQUIRED +> +]]> + +<!-- end of xhtml-bdo-1.mod --> diff --git a/lv2specgen/DTD/xhtml-blkphras-1.mod b/lv2specgen/DTD/xhtml-blkphras-1.mod new file mode 100644 index 0000000..3ab40bd --- /dev/null +++ b/lv2specgen/DTD/xhtml-blkphras-1.mod @@ -0,0 +1,164 @@ +<!-- ...................................................................... --> +<!-- XHTML Block Phrasal Module .......................................... --> +<!-- file: xhtml-blkphras-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-blkphras-1.mod,v 1.4 2008/10/08 21:02:30 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-blkphras-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Block Phrasal + + address, blockquote, pre, h1, h2, h3, h4, h5, h6 + + This module declares the elements and their attributes used to + support block-level phrasal markup. +--> + +<!ENTITY % address.element "INCLUDE" > +<![%address.element;[ +<!ENTITY % address.content + "( #PCDATA | %Inline.mix; )*" > +<!ENTITY % address.qname "address" > +<!ELEMENT %address.qname; %address.content; > +<!-- end of address.element -->]]> + +<!ENTITY % address.attlist "INCLUDE" > +<![%address.attlist;[ +<!ATTLIST %address.qname; + %Common.attrib; +> +<!-- end of address.attlist -->]]> + +<!ENTITY % blockquote.element "INCLUDE" > +<![%blockquote.element;[ +<!ENTITY % blockquote.content + "( %Block.mix; )*" +> +<!ENTITY % blockquote.qname "blockquote" > +<!ELEMENT %blockquote.qname; %blockquote.content; > +<!-- end of blockquote.element -->]]> + +<!ENTITY % blockquote.attlist "INCLUDE" > +<![%blockquote.attlist;[ +<!ATTLIST %blockquote.qname; + %Common.attrib; + cite %URI.datatype; #IMPLIED +> +<!-- end of blockquote.attlist -->]]> + +<!ENTITY % pre.element "INCLUDE" > +<![%pre.element;[ +<!ENTITY % pre.content + "( #PCDATA + | %InlStruct.class; + %InlPhras.class; + | %tt.qname; | %i.qname; | %b.qname; + %I18n.class; + %Anchor.class; + | %map.qname; + %Misc.class; + %Inline.extra; )*" +> +<!ENTITY % pre.qname "pre" > +<!ELEMENT %pre.qname; %pre.content; > +<!-- end of pre.element -->]]> + +<!ENTITY % pre.attlist "INCLUDE" > +<![%pre.attlist;[ +<!ATTLIST %pre.qname; + %Common.attrib; +> +<!-- end of pre.attlist -->]]> + +<!-- ................... Heading Elements ................... --> + +<!ENTITY % Heading.content "( #PCDATA | %Inline.mix; )*" > + +<!ENTITY % h1.element "INCLUDE" > +<![%h1.element;[ +<!ENTITY % h1.qname "h1" > +<!ELEMENT %h1.qname; %Heading.content; > +<!-- end of h1.element -->]]> + +<!ENTITY % h1.attlist "INCLUDE" > +<![%h1.attlist;[ +<!ATTLIST %h1.qname; + %Common.attrib; +> +<!-- end of h1.attlist -->]]> + +<!ENTITY % h2.element "INCLUDE" > +<![%h2.element;[ +<!ENTITY % h2.qname "h2" > +<!ELEMENT %h2.qname; %Heading.content; > +<!-- end of h2.element -->]]> + +<!ENTITY % h2.attlist "INCLUDE" > +<![%h2.attlist;[ +<!ATTLIST %h2.qname; + %Common.attrib; +> +<!-- end of h2.attlist -->]]> + +<!ENTITY % h3.element "INCLUDE" > +<![%h3.element;[ +<!ENTITY % h3.qname "h3" > +<!ELEMENT %h3.qname; %Heading.content; > +<!-- end of h3.element -->]]> + +<!ENTITY % h3.attlist "INCLUDE" > +<![%h3.attlist;[ +<!ATTLIST %h3.qname; + %Common.attrib; +> +<!-- end of h3.attlist -->]]> + +<!ENTITY % h4.element "INCLUDE" > +<![%h4.element;[ +<!ENTITY % h4.qname "h4" > +<!ELEMENT %h4.qname; %Heading.content; > +<!-- end of h4.element -->]]> + +<!ENTITY % h4.attlist "INCLUDE" > +<![%h4.attlist;[ +<!ATTLIST %h4.qname; + %Common.attrib; +> +<!-- end of h4.attlist -->]]> + +<!ENTITY % h5.element "INCLUDE" > +<![%h5.element;[ +<!ENTITY % h5.qname "h5" > +<!ELEMENT %h5.qname; %Heading.content; > +<!-- end of h5.element -->]]> + +<!ENTITY % h5.attlist "INCLUDE" > +<![%h5.attlist;[ +<!ATTLIST %h5.qname; + %Common.attrib; +> +<!-- end of h5.attlist -->]]> + +<!ENTITY % h6.element "INCLUDE" > +<![%h6.element;[ +<!ENTITY % h6.qname "h6" > +<!ELEMENT %h6.qname; %Heading.content; > +<!-- end of h6.element -->]]> + +<!ENTITY % h6.attlist "INCLUDE" > +<![%h6.attlist;[ +<!ATTLIST %h6.qname; + %Common.attrib; +> +<!-- end of h6.attlist -->]]> + +<!-- end of xhtml-blkphras-1.mod --> diff --git a/lv2specgen/DTD/xhtml-blkpres-1.mod b/lv2specgen/DTD/xhtml-blkpres-1.mod new file mode 100644 index 0000000..4263f76 --- /dev/null +++ b/lv2specgen/DTD/xhtml-blkpres-1.mod @@ -0,0 +1,40 @@ +<!-- ...................................................................... --> +<!-- XHTML Block Presentation Module ..................................... --> +<!-- file: xhtml-blkpres-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-blkpres-1.mod,v 1.4 2008/10/08 21:02:30 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-blkpres-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Block Presentational Elements + + hr + + This module declares the elements and their attributes used to + support block-level presentational markup. +--> + +<!ENTITY % hr.element "INCLUDE" > +<![%hr.element;[ +<!ENTITY % hr.content "EMPTY" > +<!ENTITY % hr.qname "hr" > +<!ELEMENT %hr.qname; %hr.content; > +<!-- end of hr.element -->]]> + +<!ENTITY % hr.attlist "INCLUDE" > +<![%hr.attlist;[ +<!ATTLIST %hr.qname; + %Common.attrib; +> +<!-- end of hr.attlist -->]]> + +<!-- end of xhtml-blkpres-1.mod --> diff --git a/lv2specgen/DTD/xhtml-blkstruct-1.mod b/lv2specgen/DTD/xhtml-blkstruct-1.mod new file mode 100644 index 0000000..4ecfc11 --- /dev/null +++ b/lv2specgen/DTD/xhtml-blkstruct-1.mod @@ -0,0 +1,57 @@ +<!-- ...................................................................... --> +<!-- XHTML Block Structural Module ....................................... --> +<!-- file: xhtml-blkstruct-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-blkstruct-1.mod,v 1.4 2008/10/08 21:02:30 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-blkstruct-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Block Structural + + div, p + + This module declares the elements and their attributes used to + support block-level structural markup. +--> + +<!ENTITY % div.element "INCLUDE" > +<![%div.element;[ +<!ENTITY % div.content + "( #PCDATA | %Flow.mix; )*" +> +<!ENTITY % div.qname "div" > +<!ELEMENT %div.qname; %div.content; > +<!-- end of div.element -->]]> + +<!ENTITY % div.attlist "INCLUDE" > +<![%div.attlist;[ +<!ATTLIST %div.qname; + %Common.attrib; +> +<!-- end of div.attlist -->]]> + +<!ENTITY % p.element "INCLUDE" > +<![%p.element;[ +<!ENTITY % p.content + "( #PCDATA | %Inline.mix; )*" > +<!ENTITY % p.qname "p" > +<!ELEMENT %p.qname; %p.content; > +<!-- end of p.element -->]]> + +<!ENTITY % p.attlist "INCLUDE" > +<![%p.attlist;[ +<!ATTLIST %p.qname; + %Common.attrib; +> +<!-- end of p.attlist -->]]> + +<!-- end of xhtml-blkstruct-1.mod --> diff --git a/lv2specgen/DTD/xhtml-charent-1.mod b/lv2specgen/DTD/xhtml-charent-1.mod new file mode 100644 index 0000000..1ea7016 --- /dev/null +++ b/lv2specgen/DTD/xhtml-charent-1.mod @@ -0,0 +1,38 @@ +<!-- ...................................................................... --> +<!-- XHTML Character Entities Module ......................................... --> +<!-- file: xhtml-charent-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved. + Revision: $Id: xhtml-charent-1.mod,v 1.1 2001/02/13 12:24:22 ht Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN" + SYSTEM "http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-charent-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Character Entities for XHTML + + This module declares the set of character entities for XHTML, + including the Latin 1, Symbol and Special character collections. +--> + +<!ENTITY % xhtml-lat1 + PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" + "xhtml-lat1.ent" > +<!ENTITY % xhtml-symbol + PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" + "xhtml-symbol.ent" > +<!ENTITY % xhtml-special + PUBLIC "-//W3C//ENTITIES Special for XHTML//EN" + "xhtml-special.ent" > + +%xhtml-lat1; +%xhtml-symbol; +%xhtml-special; + +<!-- end of xhtml-charent-1.mod --> diff --git a/lv2specgen/DTD/xhtml-csismap-1.mod b/lv2specgen/DTD/xhtml-csismap-1.mod new file mode 100644 index 0000000..686eee2 --- /dev/null +++ b/lv2specgen/DTD/xhtml-csismap-1.mod @@ -0,0 +1,114 @@ +<!-- ...................................................................... --> +<!-- XHTML Client-side Image Map Module .................................. --> +<!-- file: xhtml-csismap-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-csismap-1.mod,v 1.4 2008/10/08 21:02:30 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-csismap-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Client-side Image Maps + + area, map + + This module declares elements and attributes to support client-side + image maps. This requires that the Image Module (or a module + declaring the img element type) be included in the DTD. + + These can be placed in the same document or grouped in a + separate document, although the latter isn't widely supported +--> + +<!ENTITY % area.element "INCLUDE" > +<![%area.element;[ +<!ENTITY % area.content "EMPTY" > +<!ENTITY % area.qname "area" > +<!ELEMENT %area.qname; %area.content; > +<!-- end of area.element -->]]> + +<!ENTITY % Shape.datatype "( rect | circle | poly | default )"> +<!ENTITY % Coords.datatype "CDATA" > + +<!ENTITY % area.attlist "INCLUDE" > +<![%area.attlist;[ +<!ATTLIST %area.qname; + %Common.attrib; + href %URI.datatype; #IMPLIED + shape %Shape.datatype; 'rect' + coords %Coords.datatype; #IMPLIED + nohref ( nohref ) #IMPLIED + alt %Text.datatype; #REQUIRED + tabindex %Number.datatype; #IMPLIED + accesskey %Character.datatype; #IMPLIED +> +<!-- end of area.attlist -->]]> + +<!-- modify anchor attribute definition list + to allow for client-side image maps +--> +<!ATTLIST %a.qname; + shape %Shape.datatype; 'rect' + coords %Coords.datatype; #IMPLIED +> + +<!-- modify img attribute definition list + to allow for client-side image maps +--> +<!ATTLIST %img.qname; + usemap IDREF #IMPLIED +> + +<!-- modify form input attribute definition list + to allow for client-side image maps +--> +<!ATTLIST %input.qname; + usemap IDREF #IMPLIED +> + +<!-- modify object attribute definition list + to allow for client-side image maps +--> +<!ATTLIST %object.qname; + usemap IDREF #IMPLIED +> + +<!-- 'usemap' points to the 'id' attribute of a <map> element, + which must be in the same document; support for external + document maps was not widely supported in HTML and is + eliminated in XHTML. + + It is considered an error for the element pointed to by + a usemap IDREF to occur in anything but a <map> element. +--> + +<!ENTITY % map.element "INCLUDE" > +<![%map.element;[ +<!ENTITY % map.content + "(( %Block.mix; ) | %area.qname; )+" +> +<!ENTITY % map.qname "map" > +<!ELEMENT %map.qname; %map.content; > +<!-- end of map.element -->]]> + +<!ENTITY % map.attlist "INCLUDE" > +<![%map.attlist;[ +<!ATTLIST %map.qname; + %XHTML.xmlns.attrib; + id ID #REQUIRED + %class.attrib; + %title.attrib; + %Core.extra.attrib; + %I18n.attrib; + %Events.attrib; +> +<!-- end of map.attlist -->]]> + +<!-- end of xhtml-csismap-1.mod --> diff --git a/lv2specgen/DTD/xhtml-datatypes-1.mod b/lv2specgen/DTD/xhtml-datatypes-1.mod new file mode 100644 index 0000000..2da3445 --- /dev/null +++ b/lv2specgen/DTD/xhtml-datatypes-1.mod @@ -0,0 +1,85 @@ +<!-- ...................................................................... --> +<!-- XHTML Datatypes Module .............................................. --> +<!-- file: xhtml-datatypes-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-datatypes-1.mod,v 4.1 2001/04/06 19:23:32 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-datatypes-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Datatypes + + defines containers for the following datatypes, many of + these imported from other specifications and standards. +--> + +<!-- Length defined for cellpadding/cellspacing --> + +<!-- nn for pixels or nn% for percentage length --> +<!ENTITY % Length.datatype "CDATA" > + +<!-- space-separated list of link types --> +<!ENTITY % LinkTypes.datatype "NMTOKENS" > + +<!-- single or comma-separated list of media descriptors --> +<!ENTITY % MediaDesc.datatype "CDATA" > + +<!-- pixel, percentage, or relative --> +<!ENTITY % MultiLength.datatype "CDATA" > + +<!-- one or more digits (NUMBER) --> +<!ENTITY % Number.datatype "CDATA" > + +<!-- integer representing length in pixels --> +<!ENTITY % Pixels.datatype "CDATA" > + +<!-- script expression --> +<!ENTITY % Script.datatype "CDATA" > + +<!-- textual content --> +<!ENTITY % Text.datatype "CDATA" > + +<!-- Imported Datatypes ................................ --> + +<!-- a single character from [ISO10646] --> +<!ENTITY % Character.datatype "CDATA" > + +<!-- a character encoding, as per [RFC2045] --> +<!ENTITY % Charset.datatype "CDATA" > + +<!-- a space separated list of character encodings, as per [RFC2045] --> +<!ENTITY % Charsets.datatype "CDATA" > + +<!-- Color specification using color name or sRGB (#RRGGBB) values --> +<!ENTITY % Color.datatype "CDATA" > + +<!-- media type, as per [RFC2045] --> +<!ENTITY % ContentType.datatype "CDATA" > + +<!-- comma-separated list of media types, as per [RFC2045] --> +<!ENTITY % ContentTypes.datatype "CDATA" > + +<!-- date and time information. ISO date format --> +<!ENTITY % Datetime.datatype "CDATA" > + +<!-- formal public identifier, as per [ISO8879] --> +<!ENTITY % FPI.datatype "CDATA" > + +<!-- a language code, as per [RFC3066] or its successor --> +<!ENTITY % LanguageCode.datatype "CDATA" > + +<!-- a Uniform Resource Identifier, see [URI] --> +<!ENTITY % URI.datatype "CDATA" > + +<!-- a space-separated list of Uniform Resource Identifiers, see [URI] --> +<!ENTITY % URIs.datatype "CDATA" > + +<!-- end of xhtml-datatypes-1.mod --> diff --git a/lv2specgen/DTD/xhtml-edit-1.mod b/lv2specgen/DTD/xhtml-edit-1.mod new file mode 100644 index 0000000..d3c6282 --- /dev/null +++ b/lv2specgen/DTD/xhtml-edit-1.mod @@ -0,0 +1,66 @@ +<!-- ...................................................................... --> +<!-- XHTML Editing Elements Module ....................................... --> +<!-- file: xhtml-edit-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-edit-1.mod,v 1.4 2008/10/08 21:02:30 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Editing Markup 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-edit-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Editing Elements + + ins, del + + This module declares element types and attributes used to indicate + inserted and deleted content while editing a document. +--> + +<!-- ins: Inserted Text ............................... --> + +<!ENTITY % ins.element "INCLUDE" > +<![%ins.element;[ +<!ENTITY % ins.content + "( #PCDATA | %Flow.mix; )*" +> +<!ENTITY % ins.qname "ins" > +<!ELEMENT %ins.qname; %ins.content; > +<!-- end of ins.element -->]]> + +<!ENTITY % ins.attlist "INCLUDE" > +<![%ins.attlist;[ +<!ATTLIST %ins.qname; + %Common.attrib; + cite %URI.datatype; #IMPLIED + datetime %Datetime.datatype; #IMPLIED +> +<!-- end of ins.attlist -->]]> + +<!-- del: Deleted Text ................................ --> + +<!ENTITY % del.element "INCLUDE" > +<![%del.element;[ +<!ENTITY % del.content + "( #PCDATA | %Flow.mix; )*" +> +<!ENTITY % del.qname "del" > +<!ELEMENT %del.qname; %del.content; > +<!-- end of del.element -->]]> + +<!ENTITY % del.attlist "INCLUDE" > +<![%del.attlist;[ +<!ATTLIST %del.qname; + %Common.attrib; + cite %URI.datatype; #IMPLIED + datetime %Datetime.datatype; #IMPLIED +> +<!-- end of del.attlist -->]]> + +<!-- end of xhtml-edit-1.mod --> diff --git a/lv2specgen/DTD/xhtml-events-1.mod b/lv2specgen/DTD/xhtml-events-1.mod new file mode 100644 index 0000000..35589e0 --- /dev/null +++ b/lv2specgen/DTD/xhtml-events-1.mod @@ -0,0 +1,135 @@ +<!-- ...................................................................... --> +<!-- XHTML Intrinsic Events Module ....................................... --> +<!-- file: xhtml-events-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-events-1.mod,v 1.4 2008/10/08 21:02:30 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-events-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Intrinsic Event Attributes + + These are the event attributes defined in HTML 4, + Section 18.2.3 "Intrinsic Events". This module must be + instantiated prior to the Attributes Module but after + the Datatype Module in the Modular Framework module. + + "Note: Authors of HTML documents are advised that changes + are likely to occur in the realm of intrinsic events + (e.g., how scripts are bound to events). Research in + this realm is carried on by members of the W3C Document + Object Model Working Group (see the W3C Web site at + http://www.w3.org/ for more information)." +--> +<!-- NOTE: Because the ATTLIST declarations in this module occur + before their respective ELEMENT declarations in other + modules, there may be a dependency on this module that + should be considered if any of the parameter entities used + for element type names (eg., %a.qname;) are redeclared. +--> + +<!ENTITY % Events.attrib + "onclick %Script.datatype; #IMPLIED + ondblclick %Script.datatype; #IMPLIED + onmousedown %Script.datatype; #IMPLIED + onmouseup %Script.datatype; #IMPLIED + onmouseover %Script.datatype; #IMPLIED + onmousemove %Script.datatype; #IMPLIED + onmouseout %Script.datatype; #IMPLIED + onkeypress %Script.datatype; #IMPLIED + onkeydown %Script.datatype; #IMPLIED + onkeyup %Script.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.events.attrib + "%XHTML.prefix;:onclick %Script.datatype; #IMPLIED + %XHTML.prefix;:ondblclick %Script.datatype; #IMPLIED + %XHTML.prefix;:onmousedown %Script.datatype; #IMPLIED + %XHTML.prefix;:onmouseup %Script.datatype; #IMPLIED + %XHTML.prefix;:onmouseover %Script.datatype; #IMPLIED + %XHTML.prefix;:onmousemove %Script.datatype; #IMPLIED + %XHTML.prefix;:onmouseout %Script.datatype; #IMPLIED + %XHTML.prefix;:onkeypress %Script.datatype; #IMPLIED + %XHTML.prefix;:onkeydown %Script.datatype; #IMPLIED + %XHTML.prefix;:onkeyup %Script.datatype; #IMPLIED" +> +]]> + +<!-- additional attributes on anchor element +--> +<!ATTLIST %a.qname; + onfocus %Script.datatype; #IMPLIED + onblur %Script.datatype; #IMPLIED +> + +<!-- additional attributes on form element +--> +<!ATTLIST %form.qname; + onsubmit %Script.datatype; #IMPLIED + onreset %Script.datatype; #IMPLIED +> + +<!-- additional attributes on label element +--> +<!ATTLIST %label.qname; + onfocus %Script.datatype; #IMPLIED + onblur %Script.datatype; #IMPLIED +> + +<!-- additional attributes on input element +--> +<!ATTLIST %input.qname; + onfocus %Script.datatype; #IMPLIED + onblur %Script.datatype; #IMPLIED + onselect %Script.datatype; #IMPLIED + onchange %Script.datatype; #IMPLIED +> + +<!-- additional attributes on select element +--> +<!ATTLIST %select.qname; + onfocus %Script.datatype; #IMPLIED + onblur %Script.datatype; #IMPLIED + onchange %Script.datatype; #IMPLIED +> + +<!-- additional attributes on textarea element +--> +<!ATTLIST %textarea.qname; + onfocus %Script.datatype; #IMPLIED + onblur %Script.datatype; #IMPLIED + onselect %Script.datatype; #IMPLIED + onchange %Script.datatype; #IMPLIED +> + +<!-- additional attributes on button element +--> +<!ATTLIST %button.qname; + onfocus %Script.datatype; #IMPLIED + onblur %Script.datatype; #IMPLIED +> + +<!-- additional attributes on body element +--> +<!ATTLIST %body.qname; + onload %Script.datatype; #IMPLIED + onunload %Script.datatype; #IMPLIED +> + +<!-- additional attributes on area element +--> +<!ATTLIST %area.qname; + onfocus %Script.datatype; #IMPLIED + onblur %Script.datatype; #IMPLIED +> + +<!-- end of xhtml-events-1.mod --> diff --git a/lv2specgen/DTD/xhtml-form-1.mod b/lv2specgen/DTD/xhtml-form-1.mod new file mode 100644 index 0000000..de68a75 --- /dev/null +++ b/lv2specgen/DTD/xhtml-form-1.mod @@ -0,0 +1,292 @@ +<!-- ...................................................................... --> +<!-- XHTML Forms Module .................................................. --> +<!-- file: xhtml-form-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-form-1.mod,v 4.1 2001/04/10 09:42:30 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-form-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Forms + + form, label, input, select, optgroup, option, + textarea, fieldset, legend, button + + This module declares markup to provide support for online + forms, based on the features found in HTML 4 forms. +--> + +<!-- declare qualified element type names: +--> +<!ENTITY % form.qname "form" > +<!ENTITY % label.qname "label" > +<!ENTITY % input.qname "input" > +<!ENTITY % select.qname "select" > +<!ENTITY % optgroup.qname "optgroup" > +<!ENTITY % option.qname "option" > +<!ENTITY % textarea.qname "textarea" > +<!ENTITY % fieldset.qname "fieldset" > +<!ENTITY % legend.qname "legend" > +<!ENTITY % button.qname "button" > + +<!-- %BlkNoForm.mix; includes all non-form block elements, + plus %Misc.class; +--> +<!ENTITY % BlkNoForm.mix + "%Heading.class; + | %List.class; + | %BlkStruct.class; + %BlkPhras.class; + %BlkPres.class; + %Table.class; + %Block.extra; + %Misc.class;" +> + +<!-- form: Form Element ................................ --> + +<!ENTITY % form.element "INCLUDE" > +<![%form.element;[ +<!ENTITY % form.content + "( %BlkNoForm.mix; + | %fieldset.qname; )+" +> +<!ELEMENT %form.qname; %form.content; > +<!-- end of form.element -->]]> + +<!ENTITY % form.attlist "INCLUDE" > +<![%form.attlist;[ +<!ATTLIST %form.qname; + %Common.attrib; + action %URI.datatype; #REQUIRED + method ( get | post ) 'get' + name CDATA #IMPLIED + enctype %ContentType.datatype; 'application/x-www-form-urlencoded' + accept-charset %Charsets.datatype; #IMPLIED + accept %ContentTypes.datatype; #IMPLIED +> +<!-- end of form.attlist -->]]> + +<!-- label: Form Field Label Text ...................... --> + +<!-- Each label must not contain more than ONE field +--> + +<!ENTITY % label.element "INCLUDE" > +<![%label.element;[ +<!ENTITY % label.content + "( #PCDATA + | %input.qname; | %select.qname; | %textarea.qname; | %button.qname; + | %InlStruct.class; + %InlPhras.class; + %I18n.class; + %InlPres.class; + %Anchor.class; + %InlSpecial.class; + %Inline.extra; + %Misc.class; )*" +> +<!ELEMENT %label.qname; %label.content; > +<!-- end of label.element -->]]> + +<!ENTITY % label.attlist "INCLUDE" > +<![%label.attlist;[ +<!ATTLIST %label.qname; + %Common.attrib; + for IDREF #IMPLIED + accesskey %Character.datatype; #IMPLIED +> +<!-- end of label.attlist -->]]> + +<!-- input: Form Control ............................... --> + +<!ENTITY % input.element "INCLUDE" > +<![%input.element;[ +<!ENTITY % input.content "EMPTY" > +<!ELEMENT %input.qname; %input.content; > +<!-- end of input.element -->]]> + +<!ENTITY % input.attlist "INCLUDE" > +<![%input.attlist;[ +<!ENTITY % InputType.class + "( text | password | checkbox | radio | submit + | reset | file | hidden | image | button )" +> +<!-- attribute 'name' required for all but submit & reset +--> +<!ATTLIST %input.qname; + %Common.attrib; + type %InputType.class; 'text' + name CDATA #IMPLIED + value CDATA #IMPLIED + checked ( checked ) #IMPLIED + disabled ( disabled ) #IMPLIED + readonly ( readonly ) #IMPLIED + size %Number.datatype; #IMPLIED + maxlength %Number.datatype; #IMPLIED + src %URI.datatype; #IMPLIED + alt %Text.datatype; #IMPLIED + tabindex %Number.datatype; #IMPLIED + accesskey %Character.datatype; #IMPLIED + accept %ContentTypes.datatype; #IMPLIED +> +<!-- end of input.attlist -->]]> + +<!-- select: Option Selector ........................... --> + +<!ENTITY % select.element "INCLUDE" > +<![%select.element;[ +<!ENTITY % select.content + "( %optgroup.qname; | %option.qname; )+" +> +<!ELEMENT %select.qname; %select.content; > +<!-- end of select.element -->]]> + +<!ENTITY % select.attlist "INCLUDE" > +<![%select.attlist;[ +<!ATTLIST %select.qname; + %Common.attrib; + name CDATA #IMPLIED + size %Number.datatype; #IMPLIED + multiple ( multiple ) #IMPLIED + disabled ( disabled ) #IMPLIED + tabindex %Number.datatype; #IMPLIED +> +<!-- end of select.attlist -->]]> + +<!-- optgroup: Option Group ............................ --> + +<!ENTITY % optgroup.element "INCLUDE" > +<![%optgroup.element;[ +<!ENTITY % optgroup.content "( %option.qname; )+" > +<!ELEMENT %optgroup.qname; %optgroup.content; > +<!-- end of optgroup.element -->]]> + +<!ENTITY % optgroup.attlist "INCLUDE" > +<![%optgroup.attlist;[ +<!ATTLIST %optgroup.qname; + %Common.attrib; + disabled ( disabled ) #IMPLIED + label %Text.datatype; #REQUIRED +> +<!-- end of optgroup.attlist -->]]> + +<!-- option: Selectable Choice ......................... --> + +<!ENTITY % option.element "INCLUDE" > +<![%option.element;[ +<!ENTITY % option.content "( #PCDATA )" > +<!ELEMENT %option.qname; %option.content; > +<!-- end of option.element -->]]> + +<!ENTITY % option.attlist "INCLUDE" > +<![%option.attlist;[ +<!ATTLIST %option.qname; + %Common.attrib; + selected ( selected ) #IMPLIED + disabled ( disabled ) #IMPLIED + label %Text.datatype; #IMPLIED + value CDATA #IMPLIED +> +<!-- end of option.attlist -->]]> + +<!-- textarea: Multi-Line Text Field ................... --> + +<!ENTITY % textarea.element "INCLUDE" > +<![%textarea.element;[ +<!ENTITY % textarea.content "( #PCDATA )" > +<!ELEMENT %textarea.qname; %textarea.content; > +<!-- end of textarea.element -->]]> + +<!ENTITY % textarea.attlist "INCLUDE" > +<![%textarea.attlist;[ +<!ATTLIST %textarea.qname; + %Common.attrib; + name CDATA #IMPLIED + rows %Number.datatype; #REQUIRED + cols %Number.datatype; #REQUIRED + disabled ( disabled ) #IMPLIED + readonly ( readonly ) #IMPLIED + tabindex %Number.datatype; #IMPLIED + accesskey %Character.datatype; #IMPLIED +> +<!-- end of textarea.attlist -->]]> + +<!-- fieldset: Form Control Group ...................... --> + +<!-- #PCDATA is to solve the mixed content problem, + per specification only whitespace is allowed +--> + +<!ENTITY % fieldset.element "INCLUDE" > +<![%fieldset.element;[ +<!ENTITY % fieldset.content + "( #PCDATA | %legend.qname; | %Flow.mix; )*" +> +<!ELEMENT %fieldset.qname; %fieldset.content; > +<!-- end of fieldset.element -->]]> + +<!ENTITY % fieldset.attlist "INCLUDE" > +<![%fieldset.attlist;[ +<!ATTLIST %fieldset.qname; + %Common.attrib; +> +<!-- end of fieldset.attlist -->]]> + +<!-- legend: Fieldset Legend ........................... --> + +<!ENTITY % legend.element "INCLUDE" > +<![%legend.element;[ +<!ENTITY % legend.content + "( #PCDATA | %Inline.mix; )*" +> +<!ELEMENT %legend.qname; %legend.content; > +<!-- end of legend.element -->]]> + +<!ENTITY % legend.attlist "INCLUDE" > +<![%legend.attlist;[ +<!ATTLIST %legend.qname; + %Common.attrib; + accesskey %Character.datatype; #IMPLIED +> +<!-- end of legend.attlist -->]]> + +<!-- button: Push Button ............................... --> + +<!ENTITY % button.element "INCLUDE" > +<![%button.element;[ +<!ENTITY % button.content + "( #PCDATA + | %BlkNoForm.mix; + | %InlStruct.class; + %InlPhras.class; + %InlPres.class; + %I18n.class; + %InlSpecial.class; + %Inline.extra; )*" +> +<!ELEMENT %button.qname; %button.content; > +<!-- end of button.element -->]]> + +<!ENTITY % button.attlist "INCLUDE" > +<![%button.attlist;[ +<!ATTLIST %button.qname; + %Common.attrib; + name CDATA #IMPLIED + value CDATA #IMPLIED + type ( button | submit | reset ) 'submit' + disabled ( disabled ) #IMPLIED + tabindex %Number.datatype; #IMPLIED + accesskey %Character.datatype; #IMPLIED +> +<!-- end of button.attlist -->]]> + +<!-- end of xhtml-form-1.mod --> diff --git a/lv2specgen/DTD/xhtml-framework-1.mod b/lv2specgen/DTD/xhtml-framework-1.mod new file mode 100644 index 0000000..7d9d972 --- /dev/null +++ b/lv2specgen/DTD/xhtml-framework-1.mod @@ -0,0 +1,97 @@ +<!-- ...................................................................... --> +<!-- XHTML Modular Framework Module ...................................... --> +<!-- file: xhtml-framework-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-framework-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-framework-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Modular Framework + + This required module instantiates the modules needed + to support the XHTML modularization model, including: + + + datatypes + + namespace-qualified names + + common attributes + + document model + + character entities + + The Intrinsic Events module is ignored by default but + occurs in this module because it must be instantiated + prior to Attributes but after Datatypes. +--> + +<!ENTITY % xhtml-arch.module "IGNORE" > +<![%xhtml-arch.module;[ +<!ENTITY % xhtml-arch.mod + PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN" + "xhtml-arch-1.mod" > +%xhtml-arch.mod;]]> + +<!ENTITY % xhtml-notations.module "IGNORE" > +<![%xhtml-notations.module;[ +<!ENTITY % xhtml-notations.mod + PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN" + "xhtml-notations-1.mod" > +%xhtml-notations.mod;]]> + +<!ENTITY % xhtml-datatypes.module "INCLUDE" > +<![%xhtml-datatypes.module;[ +<!ENTITY % xhtml-datatypes.mod + PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN" + "xhtml-datatypes-1.mod" > +%xhtml-datatypes.mod;]]> + +<!-- placeholder for XLink support module --> +<!ENTITY % xhtml-xlink.mod "" > +%xhtml-xlink.mod; + +<!ENTITY % xhtml-qname.module "INCLUDE" > +<![%xhtml-qname.module;[ +<!ENTITY % xhtml-qname.mod + PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN" + "xhtml-qname-1.mod" > +%xhtml-qname.mod;]]> + +<!ENTITY % xhtml-events.module "IGNORE" > +<![%xhtml-events.module;[ +<!ENTITY % xhtml-events.mod + PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN" + "xhtml-events-1.mod" > +%xhtml-events.mod;]]> + +<!ENTITY % xhtml-attribs.module "INCLUDE" > +<![%xhtml-attribs.module;[ +<!ENTITY % xhtml-attribs.mod + PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN" + "xhtml-attribs-1.mod" > +%xhtml-attribs.mod;]]> + +<!-- placeholder for content model redeclarations --> +<!ENTITY % xhtml-model.redecl "" > +%xhtml-model.redecl; + +<!ENTITY % xhtml-model.module "INCLUDE" > +<![%xhtml-model.module;[ +<!-- instantiate the Document Model module declared in the DTD driver +--> +%xhtml-model.mod;]]> + +<!ENTITY % xhtml-charent.module "INCLUDE" > +<![%xhtml-charent.module;[ +<!ENTITY % xhtml-charent.mod + PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN" + "xhtml-charent-1.mod" > +%xhtml-charent.mod;]]> + +<!-- end of xhtml-framework-1.mod --> diff --git a/lv2specgen/DTD/xhtml-hypertext-1.mod b/lv2specgen/DTD/xhtml-hypertext-1.mod new file mode 100644 index 0000000..7a7d8ca --- /dev/null +++ b/lv2specgen/DTD/xhtml-hypertext-1.mod @@ -0,0 +1,54 @@ +<!-- ...................................................................... --> +<!-- XHTML Hypertext Module .............................................. --> +<!-- file: xhtml-hypertext-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-hypertext-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-hypertext-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Hypertext + + a + + This module declares the anchor ('a') element type, which + defines the source of a hypertext link. The destination + (or link 'target') is identified via its 'id' attribute + rather than the 'name' attribute as was used in HTML. +--> + +<!-- ............ Anchor Element ............ --> + +<!ENTITY % a.element "INCLUDE" > +<![%a.element;[ +<!ENTITY % a.content + "( #PCDATA | %InlNoAnchor.mix; )*" +> +<!ENTITY % a.qname "a" > +<!ELEMENT %a.qname; %a.content; > +<!-- end of a.element -->]]> + +<!ENTITY % a.attlist "INCLUDE" > +<![%a.attlist;[ +<!ATTLIST %a.qname; + %Common.attrib; + href %URI.datatype; #IMPLIED + charset %Charset.datatype; #IMPLIED + type %ContentType.datatype; #IMPLIED + hreflang %LanguageCode.datatype; #IMPLIED + rel %LinkTypes.datatype; #IMPLIED + rev %LinkTypes.datatype; #IMPLIED + accesskey %Character.datatype; #IMPLIED + tabindex %Number.datatype; #IMPLIED +> +<!-- end of a.attlist -->]]> + +<!-- end of xhtml-hypertext-1.mod --> diff --git a/lv2specgen/DTD/xhtml-image-1.mod b/lv2specgen/DTD/xhtml-image-1.mod new file mode 100644 index 0000000..8561761 --- /dev/null +++ b/lv2specgen/DTD/xhtml-image-1.mod @@ -0,0 +1,51 @@ +<!-- ...................................................................... --> +<!-- XHTML Images Module ................................................. --> +<!-- file: xhtml-image-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Rovision: $Id: xhtml-image-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-image-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Images + + img + + This module provides markup to support basic image embedding. +--> + +<!-- To avoid problems with text-only UAs as well as to make + image content understandable and navigable to users of + non-visual UAs, you need to provide a description with + the 'alt' attribute, and avoid server-side image maps. +--> + +<!ENTITY % img.element "INCLUDE" > +<![%img.element;[ +<!ENTITY % img.content "EMPTY" > +<!ENTITY % img.qname "img" > +<!ELEMENT %img.qname; %img.content; > +<!-- end of img.element -->]]> + +<!ENTITY % img.attlist "INCLUDE" > +<![%img.attlist;[ +<!ATTLIST %img.qname; + %Common.attrib; + src %URI.datatype; #REQUIRED + alt %Text.datatype; #REQUIRED + longdesc %URI.datatype; #IMPLIED + name CDATA #IMPLIED + height %Length.datatype; #IMPLIED + width %Length.datatype; #IMPLIED +> +<!-- end of img.attlist -->]]> + +<!-- end of xhtml-image-1.mod --> diff --git a/lv2specgen/DTD/xhtml-inlphras-1.mod b/lv2specgen/DTD/xhtml-inlphras-1.mod new file mode 100644 index 0000000..0d26daa --- /dev/null +++ b/lv2specgen/DTD/xhtml-inlphras-1.mod @@ -0,0 +1,203 @@ +<!-- ...................................................................... --> +<!-- XHTML Inline Phrasal Module ......................................... --> +<!-- file: xhtml-inlphras-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-inlphras-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inlphras-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Inline Phrasal + + abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var + + This module declares the elements and their attributes used to + support inline-level phrasal markup. +--> + +<!ENTITY % abbr.element "INCLUDE" > +<![%abbr.element;[ +<!ENTITY % abbr.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % abbr.qname "abbr" > +<!ELEMENT %abbr.qname; %abbr.content; > +<!-- end of abbr.element -->]]> + +<!ENTITY % abbr.attlist "INCLUDE" > +<![%abbr.attlist;[ +<!ATTLIST %abbr.qname; + %Common.attrib; +> +<!-- end of abbr.attlist -->]]> + +<!ENTITY % acronym.element "INCLUDE" > +<![%acronym.element;[ +<!ENTITY % acronym.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % acronym.qname "acronym" > +<!ELEMENT %acronym.qname; %acronym.content; > +<!-- end of acronym.element -->]]> + +<!ENTITY % acronym.attlist "INCLUDE" > +<![%acronym.attlist;[ +<!ATTLIST %acronym.qname; + %Common.attrib; +> +<!-- end of acronym.attlist -->]]> + +<!ENTITY % cite.element "INCLUDE" > +<![%cite.element;[ +<!ENTITY % cite.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % cite.qname "cite" > +<!ELEMENT %cite.qname; %cite.content; > +<!-- end of cite.element -->]]> + +<!ENTITY % cite.attlist "INCLUDE" > +<![%cite.attlist;[ +<!ATTLIST %cite.qname; + %Common.attrib; +> +<!-- end of cite.attlist -->]]> + +<!ENTITY % code.element "INCLUDE" > +<![%code.element;[ +<!ENTITY % code.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % code.qname "code" > +<!ELEMENT %code.qname; %code.content; > +<!-- end of code.element -->]]> + +<!ENTITY % code.attlist "INCLUDE" > +<![%code.attlist;[ +<!ATTLIST %code.qname; + %Common.attrib; +> +<!-- end of code.attlist -->]]> + +<!ENTITY % dfn.element "INCLUDE" > +<![%dfn.element;[ +<!ENTITY % dfn.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % dfn.qname "dfn" > +<!ELEMENT %dfn.qname; %dfn.content; > +<!-- end of dfn.element -->]]> + +<!ENTITY % dfn.attlist "INCLUDE" > +<![%dfn.attlist;[ +<!ATTLIST %dfn.qname; + %Common.attrib; +> +<!-- end of dfn.attlist -->]]> + +<!ENTITY % em.element "INCLUDE" > +<![%em.element;[ +<!ENTITY % em.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % em.qname "em" > +<!ELEMENT %em.qname; %em.content; > +<!-- end of em.element -->]]> + +<!ENTITY % em.attlist "INCLUDE" > +<![%em.attlist;[ +<!ATTLIST %em.qname; + %Common.attrib; +> +<!-- end of em.attlist -->]]> + +<!ENTITY % kbd.element "INCLUDE" > +<![%kbd.element;[ +<!ENTITY % kbd.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % kbd.qname "kbd" > +<!ELEMENT %kbd.qname; %kbd.content; > +<!-- end of kbd.element -->]]> + +<!ENTITY % kbd.attlist "INCLUDE" > +<![%kbd.attlist;[ +<!ATTLIST %kbd.qname; + %Common.attrib; +> +<!-- end of kbd.attlist -->]]> + +<!ENTITY % q.element "INCLUDE" > +<![%q.element;[ +<!ENTITY % q.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % q.qname "q" > +<!ELEMENT %q.qname; %q.content; > +<!-- end of q.element -->]]> + +<!ENTITY % q.attlist "INCLUDE" > +<![%q.attlist;[ +<!ATTLIST %q.qname; + %Common.attrib; + cite %URI.datatype; #IMPLIED +> +<!-- end of q.attlist -->]]> + +<!ENTITY % samp.element "INCLUDE" > +<![%samp.element;[ +<!ENTITY % samp.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % samp.qname "samp" > +<!ELEMENT %samp.qname; %samp.content; > +<!-- end of samp.element -->]]> + +<!ENTITY % samp.attlist "INCLUDE" > +<![%samp.attlist;[ +<!ATTLIST %samp.qname; + %Common.attrib; +> +<!-- end of samp.attlist -->]]> + +<!ENTITY % strong.element "INCLUDE" > +<![%strong.element;[ +<!ENTITY % strong.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % strong.qname "strong" > +<!ELEMENT %strong.qname; %strong.content; > +<!-- end of strong.element -->]]> + +<!ENTITY % strong.attlist "INCLUDE" > +<![%strong.attlist;[ +<!ATTLIST %strong.qname; + %Common.attrib; +> +<!-- end of strong.attlist -->]]> + +<!ENTITY % var.element "INCLUDE" > +<![%var.element;[ +<!ENTITY % var.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % var.qname "var" > +<!ELEMENT %var.qname; %var.content; > +<!-- end of var.element -->]]> + +<!ENTITY % var.attlist "INCLUDE" > +<![%var.attlist;[ +<!ATTLIST %var.qname; + %Common.attrib; +> +<!-- end of var.attlist -->]]> + +<!-- end of xhtml-inlphras-1.mod --> diff --git a/lv2specgen/DTD/xhtml-inlpres-1.mod b/lv2specgen/DTD/xhtml-inlpres-1.mod new file mode 100644 index 0000000..e8c9e39 --- /dev/null +++ b/lv2specgen/DTD/xhtml-inlpres-1.mod @@ -0,0 +1,138 @@ +<!-- ...................................................................... --> +<!-- XHTML Inline Presentation Module .................................... --> +<!-- file: xhtml-inlpres-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-inlpres-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inlpres-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Inline Presentational Elements + + b, big, i, small, sub, sup, tt + + This module declares the elements and their attributes used to + support inline-level presentational markup. +--> + +<!ENTITY % b.element "INCLUDE" > +<![%b.element;[ +<!ENTITY % b.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % b.qname "b" > +<!ELEMENT %b.qname; %b.content; > +<!-- end of b.element -->]]> + +<!ENTITY % b.attlist "INCLUDE" > +<![%b.attlist;[ +<!ATTLIST %b.qname; + %Common.attrib; +> +<!-- end of b.attlist -->]]> + +<!ENTITY % big.element "INCLUDE" > +<![%big.element;[ +<!ENTITY % big.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % big.qname "big" > +<!ELEMENT %big.qname; %big.content; > +<!-- end of big.element -->]]> + +<!ENTITY % big.attlist "INCLUDE" > +<![%big.attlist;[ +<!ATTLIST %big.qname; + %Common.attrib; +> +<!-- end of big.attlist -->]]> + +<!ENTITY % i.element "INCLUDE" > +<![%i.element;[ +<!ENTITY % i.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % i.qname "i" > +<!ELEMENT %i.qname; %i.content; > +<!-- end of i.element -->]]> + +<!ENTITY % i.attlist "INCLUDE" > +<![%i.attlist;[ +<!ATTLIST %i.qname; + %Common.attrib; +> +<!-- end of i.attlist -->]]> + +<!ENTITY % small.element "INCLUDE" > +<![%small.element;[ +<!ENTITY % small.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % small.qname "small" > +<!ELEMENT %small.qname; %small.content; > +<!-- end of small.element -->]]> + +<!ENTITY % small.attlist "INCLUDE" > +<![%small.attlist;[ +<!ATTLIST %small.qname; + %Common.attrib; +> +<!-- end of small.attlist -->]]> + +<!ENTITY % sub.element "INCLUDE" > +<![%sub.element;[ +<!ENTITY % sub.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % sub.qname "sub" > +<!ELEMENT %sub.qname; %sub.content; > +<!-- end of sub.element -->]]> + +<!ENTITY % sub.attlist "INCLUDE" > +<![%sub.attlist;[ +<!ATTLIST %sub.qname; + %Common.attrib; +> +<!-- end of sub.attlist -->]]> + +<!ENTITY % sup.element "INCLUDE" > +<![%sup.element;[ +<!ENTITY % sup.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % sup.qname "sup" > +<!ELEMENT %sup.qname; %sup.content; > +<!-- end of sup.element -->]]> + +<!ENTITY % sup.attlist "INCLUDE" > +<![%sup.attlist;[ +<!ATTLIST %sup.qname; + %Common.attrib; +> +<!-- end of sup.attlist -->]]> + +<!ENTITY % tt.element "INCLUDE" > +<![%tt.element;[ +<!ENTITY % tt.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % tt.qname "tt" > +<!ELEMENT %tt.qname; %tt.content; > +<!-- end of tt.element -->]]> + +<!ENTITY % tt.attlist "INCLUDE" > +<![%tt.attlist;[ +<!ATTLIST %tt.qname; + %Common.attrib; +> +<!-- end of tt.attlist -->]]> + +<!-- end of xhtml-inlpres-1.mod --> diff --git a/lv2specgen/DTD/xhtml-inlstruct-1.mod b/lv2specgen/DTD/xhtml-inlstruct-1.mod new file mode 100644 index 0000000..2b86422 --- /dev/null +++ b/lv2specgen/DTD/xhtml-inlstruct-1.mod @@ -0,0 +1,62 @@ +<!-- ...................................................................... --> +<!-- XHTML Inline Structural Module ...................................... --> +<!-- file: xhtml-inlstruct-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-inlstruct-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inlstruct-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Inline Structural + + br, span + + This module declares the elements and their attributes + used to support inline-level structural markup. +--> + +<!-- br: forced line break ............................. --> + +<!ENTITY % br.element "INCLUDE" > +<![%br.element;[ + +<!ENTITY % br.content "EMPTY" > +<!ENTITY % br.qname "br" > +<!ELEMENT %br.qname; %br.content; > + +<!-- end of br.element -->]]> + +<!ENTITY % br.attlist "INCLUDE" > +<![%br.attlist;[ +<!ATTLIST %br.qname; + %Core.attrib; +> +<!-- end of br.attlist -->]]> + +<!-- span: generic inline container .................... --> + +<!ENTITY % span.element "INCLUDE" > +<![%span.element;[ +<!ENTITY % span.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % span.qname "span" > +<!ELEMENT %span.qname; %span.content; > +<!-- end of span.element -->]]> + +<!ENTITY % span.attlist "INCLUDE" > +<![%span.attlist;[ +<!ATTLIST %span.qname; + %Common.attrib; +> +<!-- end of span.attlist -->]]> + +<!-- end of xhtml-inlstruct-1.mod --> diff --git a/lv2specgen/DTD/xhtml-inlstyle-1.mod b/lv2specgen/DTD/xhtml-inlstyle-1.mod new file mode 100644 index 0000000..85a2ca4 --- /dev/null +++ b/lv2specgen/DTD/xhtml-inlstyle-1.mod @@ -0,0 +1,34 @@ +<!-- ...................................................................... --> +<!-- XHTML Inline Style Module ........................................... --> +<!-- file: xhtml-inlstyle-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-inlstyle-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML Inline Style 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inlstyle-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Inline Style + + This module declares the 'style' attribute, used to support inline + style markup. This module must be instantiated prior to the XHTML + Common Attributes module in order to be included in %Core.attrib;. +--> + +<!ENTITY % style.attrib + "style CDATA #IMPLIED" +> + + +<!ENTITY % Core.extra.attrib + "%style.attrib;" +> + +<!-- end of xhtml-inlstyle-1.mod --> diff --git a/lv2specgen/DTD/xhtml-inputmode-1.mod b/lv2specgen/DTD/xhtml-inputmode-1.mod new file mode 100644 index 0000000..36f1d36 --- /dev/null +++ b/lv2specgen/DTD/xhtml-inputmode-1.mod @@ -0,0 +1,39 @@ +<!-- ...................................................................... --> +<!-- XHTML Inputmode Module .............................................. --> +<!-- file: xhtml-inputmode-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2007 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-inputmode-1.mod,v 1.2 2007/07/13 14:37:53 jigsaw Exp $ + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Inputmode 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-inputmode-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Inputmode + + inputmode + + This module declares the 'inputmode' attribute used for suggesting the + input mode associated with an input or textarea element. +--> + +<!-- render in this frame --> +<!ENTITY % Inputmode.datatype "CDATA" > + +<!-- add 'inputmode' attribute to 'input' element --> +<!ATTLIST %input.qname; + inputmode %Inputmode.datatype; #IMPLIED +> + +<!-- add 'inputmode' attribute to 'textarea' element --> +<!ATTLIST %textarea.qname; + inputmode %Inputmode.datatype; #IMPLIED +> + +<!-- end of xhtml-inputmode-1.mod --> diff --git a/lv2specgen/DTD/xhtml-lat1.ent b/lv2specgen/DTD/xhtml-lat1.ent new file mode 100644 index 0000000..6f1dd65 --- /dev/null +++ b/lv2specgen/DTD/xhtml-lat1.ent @@ -0,0 +1,235 @@ +<!-- ...................................................................... --> +<!-- XML-compatible ISO Latin 1 Character Entity Set for XHTML ............ --> +<!-- file: xhtml-lat1.ent + + Typical invocation: + + <!ENTITY % xhtml-lat1 + PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent" > + %xhtml-lat1; + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" + SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent" + + Revision: $Id: xhtml-lat1.ent,v 1.1 2001/02/13 12:24:22 ht Exp $ SMI + + Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with conforming + SGML systems and applications as defined in ISO 8879, provided + this notice is included in all copies. +--> + +<!ENTITY nbsp " " ><!-- no-break space = non-breaking space, + U+00A0 ISOnum --> +<!ENTITY iexcl "¡" ><!-- inverted exclamation mark, + U+00A1 ISOnum --> +<!ENTITY cent "¢" ><!-- cent sign, + U+00A2 ISOnum --> +<!ENTITY pound "£" ><!-- pound sign, + U+00A3 ISOnum --> +<!ENTITY curren "¤" ><!-- currency sign, + U+00A4 ISOnum --> +<!ENTITY yen "¥" ><!-- yen sign = yuan sign, + U+00A5 ISOnum --> +<!ENTITY brvbar "¦" ><!-- broken bar = broken vertical bar, + U+00A6 ISOnum --> +<!ENTITY sect "§" ><!-- section sign, + U+00A7 ISOnum --> +<!ENTITY uml "¨" ><!-- diaeresis = spacing diaeresis, + U+00A8 ISOdia --> +<!ENTITY copy "©" ><!-- copyright sign, + U+00A9 ISOnum --> +<!ENTITY ordf "ª" ><!-- feminine ordinal indicator, + U+00AA ISOnum --> +<!ENTITY laquo "«" ><!-- left-pointing double angle quotation mark + = left pointing guillemet, + U+00AB ISOnum --> +<!ENTITY not "¬" ><!-- not sign, + U+00AC ISOnum --> +<!ENTITY shy "­" ><!-- soft hyphen = discretionary hyphen, + U+00AD ISOnum --> +<!ENTITY reg "®" ><!-- registered sign = registered trade mark sign, + U+00AE ISOnum --> +<!ENTITY macr "¯" ><!-- macron = spacing macron = overline + = APL overbar, + U+00AF ISOdia --> +<!ENTITY deg "°" ><!-- degree sign, + U+00B0 ISOnum --> +<!ENTITY plusmn "±" ><!-- plus-minus sign = plus-or-minus sign, + U+00B1 ISOnum --> +<!ENTITY sup2 "²" ><!-- superscript two = superscript digit two + = squared, + U+00B2 ISOnum --> +<!ENTITY sup3 "³" ><!-- superscript three = superscript digit three + = cubed, + U+00B3 ISOnum --> +<!ENTITY acute "´" ><!-- acute accent = spacing acute, + U+00B4 ISOdia --> +<!ENTITY micro "µ" ><!-- micro sign, + U+00B5 ISOnum --> +<!ENTITY para "¶" ><!-- pilcrow sign = paragraph sign, + U+00B6 ISOnum --> +<!ENTITY middot "·" ><!-- middle dot = Georgian comma + = Greek middle dot, + U+00B7 ISOnum --> +<!ENTITY cedil "¸" ><!-- cedilla = spacing cedilla, + U+00B8 ISOdia --> +<!ENTITY sup1 "¹" ><!-- superscript one = superscript digit one, + U+00B9 ISOnum --> +<!ENTITY ordm "º" ><!-- masculine ordinal indicator, + U+00BA ISOnum --> +<!ENTITY raquo "»" ><!-- right-pointing double angle quotation mark + = right pointing guillemet, + U+00BB ISOnum --> +<!ENTITY frac14 "¼" ><!-- vulgar fraction one quarter + = fraction one quarter, + U+00BC ISOnum --> +<!ENTITY frac12 "½" ><!-- vulgar fraction one half + = fraction one half, + U+00BD ISOnum --> +<!ENTITY frac34 "¾" ><!-- vulgar fraction three quarters + = fraction three quarters, + U+00BE ISOnum --> +<!ENTITY iquest "¿" ><!-- inverted question mark + = turned question mark, + U+00BF ISOnum --> +<!ENTITY Agrave "À" ><!-- latin capital letter A with grave + = latin capital letter A grave, + U+00C0 ISOlat1 --> +<!ENTITY Aacute "Á" ><!-- latin capital letter A with acute, + U+00C1 ISOlat1 --> +<!ENTITY Acirc "Â" ><!-- latin capital letter A with circumflex, + U+00C2 ISOlat1 --> +<!ENTITY Atilde "Ã" ><!-- latin capital letter A with tilde, + U+00C3 ISOlat1 --> +<!ENTITY Auml "Ä" ><!-- latin capital letter A with diaeresis, + U+00C4 ISOlat1 --> +<!ENTITY Aring "Å" ><!-- latin capital letter A with ring above + = latin capital letter A ring, + U+00C5 ISOlat1 --> +<!ENTITY AElig "Æ" ><!-- latin capital letter AE + = latin capital ligature AE, + U+00C6 ISOlat1 --> +<!ENTITY Ccedil "Ç" ><!-- latin capital letter C with cedilla, + U+00C7 ISOlat1 --> +<!ENTITY Egrave "È" ><!-- latin capital letter E with grave, + U+00C8 ISOlat1 --> +<!ENTITY Eacute "É" ><!-- latin capital letter E with acute, + U+00C9 ISOlat1 --> +<!ENTITY Ecirc "Ê" ><!-- latin capital letter E with circumflex, + U+00CA ISOlat1 --> +<!ENTITY Euml "Ë" ><!-- latin capital letter E with diaeresis, + U+00CB ISOlat1 --> +<!ENTITY Igrave "Ì" ><!-- latin capital letter I with grave, + U+00CC ISOlat1 --> +<!ENTITY Iacute "Í" ><!-- latin capital letter I with acute, + U+00CD ISOlat1 --> +<!ENTITY Icirc "Î" ><!-- latin capital letter I with circumflex, + U+00CE ISOlat1 --> +<!ENTITY Iuml "Ï" ><!-- latin capital letter I with diaeresis, + U+00CF ISOlat1 --> +<!ENTITY ETH "Ð" ><!-- latin capital letter ETH, + U+00D0 ISOlat1 --> +<!ENTITY Ntilde "Ñ" ><!-- latin capital letter N with tilde, + U+00D1 ISOlat1 --> +<!ENTITY Ograve "Ò" ><!-- latin capital letter O with grave, + U+00D2 ISOlat1 --> +<!ENTITY Oacute "Ó" ><!-- latin capital letter O with acute, + U+00D3 ISOlat1 --> +<!ENTITY Ocirc "Ô" ><!-- latin capital letter O with circumflex, + U+00D4 ISOlat1 --> +<!ENTITY Otilde "Õ" ><!-- latin capital letter O with tilde, + U+00D5 ISOlat1 --> +<!ENTITY Ouml "Ö" ><!-- latin capital letter O with diaeresis, + U+00D6 ISOlat1 --> +<!ENTITY times "×" ><!-- multiplication sign, + U+00D7 ISOnum --> +<!ENTITY Oslash "Ø" ><!-- latin capital letter O with stroke + = latin capital letter O slash, + U+00D8 ISOlat1 --> +<!ENTITY Ugrave "Ù" ><!-- latin capital letter U with grave, + U+00D9 ISOlat1 --> +<!ENTITY Uacute "Ú" ><!-- latin capital letter U with acute, + U+00DA ISOlat1 --> +<!ENTITY Ucirc "Û" ><!-- latin capital letter U with circumflex, + U+00DB ISOlat1 --> +<!ENTITY Uuml "Ü" ><!-- latin capital letter U with diaeresis, + U+00DC ISOlat1 --> +<!ENTITY Yacute "Ý" ><!-- latin capital letter Y with acute, + U+00DD ISOlat1 --> +<!ENTITY THORN "Þ" ><!-- latin capital letter THORN, + U+00DE ISOlat1 --> +<!ENTITY szlig "ß" ><!-- latin small letter sharp s = ess-zed, + U+00DF ISOlat1 --> +<!ENTITY agrave "à" ><!-- latin small letter a with grave + = latin small letter a grave, + U+00E0 ISOlat1 --> +<!ENTITY aacute "á" ><!-- latin small letter a with acute, + U+00E1 ISOlat1 --> +<!ENTITY acirc "â" ><!-- latin small letter a with circumflex, + U+00E2 ISOlat1 --> +<!ENTITY atilde "ã" ><!-- latin small letter a with tilde, + U+00E3 ISOlat1 --> +<!ENTITY auml "ä" ><!-- latin small letter a with diaeresis, + U+00E4 ISOlat1 --> +<!ENTITY aring "å" ><!-- latin small letter a with ring above + = latin small letter a ring, + U+00E5 ISOlat1 --> +<!ENTITY aelig "æ" ><!-- latin small letter ae + = latin small ligature ae, + U+00E6 ISOlat1 --> +<!ENTITY ccedil "ç" ><!-- latin small letter c with cedilla, + U+00E7 ISOlat1 --> +<!ENTITY egrave "è" ><!-- latin small letter e with grave, + U+00E8 ISOlat1 --> +<!ENTITY eacute "é" ><!-- latin small letter e with acute, + U+00E9 ISOlat1 --> +<!ENTITY ecirc "ê" ><!-- latin small letter e with circumflex, + U+00EA ISOlat1 --> +<!ENTITY euml "ë" ><!-- latin small letter e with diaeresis, + U+00EB ISOlat1 --> +<!ENTITY igrave "ì" ><!-- latin small letter i with grave, + U+00EC ISOlat1 --> +<!ENTITY iacute "í" ><!-- latin small letter i with acute, + U+00ED ISOlat1 --> +<!ENTITY icirc "î" ><!-- latin small letter i with circumflex, + U+00EE ISOlat1 --> +<!ENTITY iuml "ï" ><!-- latin small letter i with diaeresis, + U+00EF ISOlat1 --> +<!ENTITY eth "ð" ><!-- latin small letter eth, + U+00F0 ISOlat1 --> +<!ENTITY ntilde "ñ" ><!-- latin small letter n with tilde, + U+00F1 ISOlat1 --> +<!ENTITY ograve "ò" ><!-- latin small letter o with grave, + U+00F2 ISOlat1 --> +<!ENTITY oacute "ó" ><!-- latin small letter o with acute, + U+00F3 ISOlat1 --> +<!ENTITY ocirc "ô" ><!-- latin small letter o with circumflex, + U+00F4 ISOlat1 --> +<!ENTITY otilde "õ" ><!-- latin small letter o with tilde, + U+00F5 ISOlat1 --> +<!ENTITY ouml "ö" ><!-- latin small letter o with diaeresis, + U+00F6 ISOlat1 --> +<!ENTITY divide "÷" ><!-- division sign, + U+00F7 ISOnum --> +<!ENTITY oslash "ø" ><!-- latin small letter o with stroke, + = latin small letter o slash, + U+00F8 ISOlat1 --> +<!ENTITY ugrave "ù" ><!-- latin small letter u with grave, + U+00F9 ISOlat1 --> +<!ENTITY uacute "ú" ><!-- latin small letter u with acute, + U+00FA ISOlat1 --> +<!ENTITY ucirc "û" ><!-- latin small letter u with circumflex, + U+00FB ISOlat1 --> +<!ENTITY uuml "ü" ><!-- latin small letter u with diaeresis, + U+00FC ISOlat1 --> +<!ENTITY yacute "ý" ><!-- latin small letter y with acute, + U+00FD ISOlat1 --> +<!ENTITY thorn "þ" ><!-- latin small letter thorn with, + U+00FE ISOlat1 --> +<!ENTITY yuml "ÿ" ><!-- latin small letter y with diaeresis, + U+00FF ISOlat1 --> +<!-- end of xhtml-lat1.ent --> diff --git a/lv2specgen/DTD/xhtml-legacy-1.mod b/lv2specgen/DTD/xhtml-legacy-1.mod new file mode 100644 index 0000000..ebf11f7 --- /dev/null +++ b/lv2specgen/DTD/xhtml-legacy-1.mod @@ -0,0 +1,400 @@ +<!-- ...................................................................... --> +<!-- XHTML Legacy Markup Module ........................................... --> +<!-- file: xhtml-legacy-1.mod + + This is an extension of XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-legacy-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-legacy-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- HTML Legacy Markup + + font, basefont, center, s, strike, u, dir, menu, isindex + + (plus additional datatypes and attributes) + + This optional module declares additional markup for simple + presentation-related markup based on features found in the + HTML 4 Transitional and Frameset DTDs. This relies on + inclusion of the Legacy Redeclarations module. This module + also declares the frames, inline frames and object modules. + + This is to allow XHTML 1.1 documents to be transformed for + display on HTML browsers where CSS support is inconsistent + or unavailable. +--> +<!-- Constructing a Legacy DTD + + To construct a DTD driver obtaining a close approximation + of the HTML 4 Transitional and Frameset DTDs, declare the + Legacy Redeclarations module as the pre-framework redeclaration + parameter entity (%xhtml-prefw-redecl.mod;) and INCLUDE its + conditional section: + + ... + <!ENTITY % xhtml-prefw-redecl.module "INCLUDE" > + <![%xhtml-prefw-redecl.module;[ + <!ENTITY % xhtml-prefw-redecl.mod + PUBLIC "-//W3C//ELEMENTS XHTML Legacy Redeclarations 1.0//EN" + "xhtml-legacy-redecl-1.mod" > + %xhtml-prefw-redecl.mod;]]> + + Such a DTD should be named with a variant FPI and redeclare + the value of the %XHTML.version; parameter entity to that FPI: + + "-//Your Name Here//DTD XHTML Legacy 1.1//EN" + + IMPORTANT: see also the notes included in the Legacy Redeclarations + Module for information on how to construct a DTD using this module. +--> + + +<!-- Additional Element Types .................................... --> + +<!-- font: Local Font Modifier ........................ --> + +<!ENTITY % font.element "INCLUDE" > +<![%font.element;[ +<!ENTITY % font.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % font.qname "font" > +<!ELEMENT %font.qname; %font.content; > +<!-- end of font.element -->]]> + +<!ENTITY % font.attlist "INCLUDE" > +<![%font.attlist;[ +<!ATTLIST %font.qname; + %Core.attrib; + %I18n.attrib; + size CDATA #IMPLIED + color %Color.datatype; #IMPLIED + face CDATA #IMPLIED +> +<!-- end of font.attlist -->]]> + +<!-- basefont: Base Font Size ......................... --> + +<!ENTITY % basefont.element "INCLUDE" > +<![%basefont.element;[ +<!ENTITY % basefont.content "EMPTY" > +<!ENTITY % basefont.qname "basefont" > +<!ELEMENT %basefont.qname; %basefont.content; > +<!-- end of basefont.element -->]]> + +<!ENTITY % basefont.attlist "INCLUDE" > +<![%basefont.attlist;[ +<!ATTLIST %basefont.qname; + %id.attrib; + size CDATA #REQUIRED + color %Color.datatype; #IMPLIED + face CDATA #IMPLIED +> +<!-- end of basefont.attlist -->]]> + +<!-- center: Center Alignment ......................... --> + +<!ENTITY % center.element "INCLUDE" > +<![%center.element;[ +<!ENTITY % center.content + "( #PCDATA | %Flow.mix; )*" +> +<!ENTITY % center.qname "center" > +<!ELEMENT %center.qname; %center.content; > +<!-- end of center.element -->]]> + +<!ENTITY % center.attlist "INCLUDE" > +<![%center.attlist;[ +<!ATTLIST %center.qname; + %Common.attrib; +> +<!-- end of center.attlist -->]]> + +<!-- s: Strike-Thru Text Style ........................ --> + +<!ENTITY % s.element "INCLUDE" > +<![%s.element;[ +<!ENTITY % s.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % s.qname "s" > +<!ELEMENT %s.qname; %s.content; > +<!-- end of s.element -->]]> + +<!ENTITY % s.attlist "INCLUDE" > +<![%s.attlist;[ +<!ATTLIST %s.qname; + %Common.attrib; +> +<!-- end of s.attlist -->]]> + +<!-- strike: Strike-Thru Text Style ....................--> + +<!ENTITY % strike.element "INCLUDE" > +<![%strike.element;[ +<!ENTITY % strike.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % strike.qname "strike" > +<!ELEMENT %strike.qname; %strike.content; > +<!-- end of strike.element -->]]> + +<!ENTITY % strike.attlist "INCLUDE" > +<![%strike.attlist;[ +<!ATTLIST %strike.qname; + %Common.attrib; +> +<!-- end of strike.attlist -->]]> + +<!-- u: Underline Text Style ...........................--> + +<!ENTITY % u.element "INCLUDE" > +<![%u.element;[ +<!ENTITY % u.content + "( #PCDATA | %Inline.mix; )*" +> +<!ENTITY % u.qname "u" > +<!ELEMENT %u.qname; %u.content; > +<!-- end of u.element -->]]> + +<!ENTITY % u.attlist "INCLUDE" > +<![%u.attlist;[ +<!ATTLIST %u.qname; + %Common.attrib; +> +<!-- end of u.attlist -->]]> + +<!-- dir: Directory List .............................. --> + +<!-- NOTE: the content model for <dir> in HTML 4 excluded %Block.mix; +--> +<!ENTITY % dir.element "INCLUDE" > +<![%dir.element;[ +<!ENTITY % dir.content + "( %li.qname; )+" +> +<!ENTITY % dir.qname "dir" > +<!ELEMENT %dir.qname; %dir.content; > +<!-- end of dir.element -->]]> + +<!ENTITY % dir.attlist "INCLUDE" > +<![%dir.attlist;[ +<!ATTLIST %dir.qname; + %Common.attrib; + compact ( compact ) #IMPLIED +> +<!-- end of dir.attlist -->]]> + +<!-- menu: Menu List .................................. --> + +<!-- NOTE: the content model for <menu> in HTML 4 excluded %Block.mix; +--> +<!ENTITY % menu.element "INCLUDE" > +<![%menu.element;[ +<!ENTITY % menu.content + "( %li.qname; )+" +> +<!ENTITY % menu.qname "menu" > +<!ELEMENT %menu.qname; %menu.content; > +<!-- end of menu.element -->]]> + +<!ENTITY % menu.attlist "INCLUDE" > +<![%menu.attlist;[ +<!ATTLIST %menu.qname; + %Common.attrib; + compact ( compact ) #IMPLIED +> +<!-- end of menu.attlist -->]]> + +<!-- isindex: Single-Line Prompt ...................... --> + +<!ENTITY % isindex.element "INCLUDE" > +<![%isindex.element;[ +<!ENTITY % isindex.content "EMPTY" > +<!ENTITY % isindex.qname "isindex" > +<!ELEMENT %isindex.qname; %isindex.content; > +<!-- end of isindex.element -->]]> + +<!ENTITY % isindex.attlist "INCLUDE" > +<![%isindex.attlist;[ +<!ATTLIST %isindex.qname; + %Core.attrib; + %I18n.attrib; + prompt %Text.datatype; #IMPLIED +> +<!-- end of isindex.attlist -->]]> + + +<!-- Additional Attributes ....................................... --> + +<!-- Alignment attribute for Transitional use in HTML browsers + (this functionality is generally well-supported in CSS, + except within some contexts) +--> +<!ENTITY % align.attrib + "align ( left | center | right | justify ) #IMPLIED" +> + +<!ATTLIST %applet.qname; + align ( top | middle | bottom | left | right ) #IMPLIED + hspace %Pixels.datatype; #IMPLIED + vspace %Pixels.datatype; #IMPLIED +> + +<!ATTLIST %body.qname; + background %URI.datatype; #IMPLIED + bgcolor %Color.datatype; #IMPLIED + text %Color.datatype; #IMPLIED + link %Color.datatype; #IMPLIED + vlink %Color.datatype; #IMPLIED + alink %Color.datatype; #IMPLIED +> + +<!ATTLIST %br.qname; + clear ( left | all | right | none ) 'none' +> + +<!ATTLIST %caption.qname; + align ( top | bottom | left | right ) #IMPLIED +> + +<!ATTLIST %div.qname; + %align.attrib; +> + +<!ATTLIST %h1.qname; + %align.attrib; +> + +<!ATTLIST %h2.qname; + %align.attrib; +> + +<!ATTLIST %h3.qname; + %align.attrib; +> + +<!ATTLIST %h4.qname; + %align.attrib; +> + +<!ATTLIST %h5.qname; + %align.attrib; +> + +<!ATTLIST %h6.qname; + %align.attrib; +> + +<!ATTLIST %hr.qname; + align ( left | center | right ) #IMPLIED + noshade ( noshade ) #IMPLIED + size %Pixels.datatype; #IMPLIED + width %Length.datatype; #IMPLIED +> + +<!ATTLIST %img.qname; + align ( top | middle | bottom | left | right ) #IMPLIED + border %Pixels.datatype; #IMPLIED + hspace %Pixels.datatype; #IMPLIED + vspace %Pixels.datatype; #IMPLIED +> + +<!ATTLIST %input.qname; + align ( top | middle | bottom | left | right ) #IMPLIED +> + +<!ATTLIST %legend.qname; + align ( top | bottom | left | right ) #IMPLIED +> + +<!ATTLIST %li.qname; + type CDATA #IMPLIED + value %Number.datatype; #IMPLIED +> + +<!ATTLIST %object.qname; + align ( top | middle | bottom | left | right ) #IMPLIED + border %Pixels.datatype; #IMPLIED + hspace %Pixels.datatype; #IMPLIED + vspace %Pixels.datatype; #IMPLIED +> + +<!ATTLIST %dl.qname; + compact ( compact ) #IMPLIED +> + +<!ATTLIST %ol.qname; + type CDATA #IMPLIED + compact ( compact ) #IMPLIED + start %Number.datatype; #IMPLIED +> + +<!ATTLIST %p.qname; + %align.attrib; +> + +<!ATTLIST %pre.qname; + width %Length.datatype; #IMPLIED +> + +<!ATTLIST %script.qname; + language %ContentType.datatype; #IMPLIED +> + +<!ATTLIST %table.qname; + align ( left | center | right ) #IMPLIED + bgcolor %Color.datatype; #IMPLIED +> + +<!ATTLIST %tr.qname; + bgcolor %Color.datatype; #IMPLIED +> + +<!ATTLIST %th.qname; + nowrap ( nowrap ) #IMPLIED + bgcolor %Color.datatype; #IMPLIED + width %Length.datatype; #IMPLIED + height %Length.datatype; #IMPLIED +> + +<!ATTLIST %td.qname; + nowrap ( nowrap ) #IMPLIED + bgcolor %Color.datatype; #IMPLIED + width %Length.datatype; #IMPLIED + height %Length.datatype; #IMPLIED +> + +<!ATTLIST %ul.qname; + type CDATA #IMPLIED + compact ( compact ) #IMPLIED +> + +<!-- Frames Module ............................................... --> +<!ENTITY % xhtml-frames.module "IGNORE" > +<![%xhtml-frames.module;[ +<!ENTITY % xhtml-frames.mod + PUBLIC "-//W3C//ELEMENTS XHTML Frames 1.0//EN" + "xhtml-frames-1.mod" > +%xhtml-frames.mod;]]> + +<!-- Inline Frames Module ........................................ --> +<!ENTITY % xhtml-iframe.module "INCLUDE" > +<![%xhtml-iframe.module;[ +<!ATTLIST %iframe.qname; + align ( top | middle | bottom | left | right ) #IMPLIED +> +<!ENTITY % xhtml-iframe.mod + PUBLIC "-//W3C//ELEMENTS XHTML Inline Frame Element 1.0//EN" + "xhtml-iframe-1.mod" > +%xhtml-iframe.mod;]]> + +<!-- end of xhtml-legacy-1.mod --> diff --git a/lv2specgen/DTD/xhtml-link-1.mod b/lv2specgen/DTD/xhtml-link-1.mod new file mode 100644 index 0000000..2b4f92c --- /dev/null +++ b/lv2specgen/DTD/xhtml-link-1.mod @@ -0,0 +1,59 @@ +<!-- ...................................................................... --> +<!-- XHTML Link Element Module ........................................... --> +<!-- file: xhtml-link-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-link-1.mod,v 4.1 2001/04/05 06:57:40 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-link-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Link element + + link + + This module declares the link element type and its attributes, + which could (in principle) be used to define document-level links + to external resources such as: + + a) for document specific toolbars/menus, e.g. start, contents, + previous, next, index, end, help + b) to link to a separate style sheet (rel="stylesheet") + c) to make a link to a script (rel="script") + d) by style sheets to control how collections of html nodes are + rendered into printed documents + e) to make a link to a printable version of this document + e.g. a postscript or pdf version (rel="alternate" media="print") +--> + +<!-- link: Media-Independent Link ...................... --> + +<!ENTITY % link.element "INCLUDE" > +<![%link.element;[ +<!ENTITY % link.content "EMPTY" > +<!ENTITY % link.qname "link" > +<!ELEMENT %link.qname; %link.content; > +<!-- end of link.element -->]]> + +<!ENTITY % link.attlist "INCLUDE" > +<![%link.attlist;[ +<!ATTLIST %link.qname; + %Common.attrib; + charset %Charset.datatype; #IMPLIED + href %URI.datatype; #IMPLIED + hreflang %LanguageCode.datatype; #IMPLIED + type %ContentType.datatype; #IMPLIED + rel %LinkTypes.datatype; #IMPLIED + rev %LinkTypes.datatype; #IMPLIED + media %MediaDesc.datatype; #IMPLIED +> +<!-- end of link.attlist -->]]> + +<!-- end of xhtml-link-1.mod --> diff --git a/lv2specgen/DTD/xhtml-list-1.mod b/lv2specgen/DTD/xhtml-list-1.mod new file mode 100644 index 0000000..6c85f20 --- /dev/null +++ b/lv2specgen/DTD/xhtml-list-1.mod @@ -0,0 +1,129 @@ +<!-- ...................................................................... --> +<!-- XHTML Lists Module .................................................. --> +<!-- file: xhtml-list-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-list-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-list-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Lists + + dl, dt, dd, ol, ul, li + + This module declares the list-oriented element types + and their attributes. +--> + +<!ENTITY % dl.qname "dl" > +<!ENTITY % dt.qname "dt" > +<!ENTITY % dd.qname "dd" > +<!ENTITY % ol.qname "ol" > +<!ENTITY % ul.qname "ul" > +<!ENTITY % li.qname "li" > + +<!-- dl: Definition List ............................... --> + +<!ENTITY % dl.element "INCLUDE" > +<![%dl.element;[ +<!ENTITY % dl.content "( %dt.qname; | %dd.qname; )+" > +<!ELEMENT %dl.qname; %dl.content; > +<!-- end of dl.element -->]]> + +<!ENTITY % dl.attlist "INCLUDE" > +<![%dl.attlist;[ +<!ATTLIST %dl.qname; + %Common.attrib; +> +<!-- end of dl.attlist -->]]> + +<!-- dt: Definition Term ............................... --> + +<!ENTITY % dt.element "INCLUDE" > +<![%dt.element;[ +<!ENTITY % dt.content + "( #PCDATA | %Inline.mix; )*" +> +<!ELEMENT %dt.qname; %dt.content; > +<!-- end of dt.element -->]]> + +<!ENTITY % dt.attlist "INCLUDE" > +<![%dt.attlist;[ +<!ATTLIST %dt.qname; + %Common.attrib; +> +<!-- end of dt.attlist -->]]> + +<!-- dd: Definition Description ........................ --> + +<!ENTITY % dd.element "INCLUDE" > +<![%dd.element;[ +<!ENTITY % dd.content + "( #PCDATA | %Flow.mix; )*" +> +<!ELEMENT %dd.qname; %dd.content; > +<!-- end of dd.element -->]]> + +<!ENTITY % dd.attlist "INCLUDE" > +<![%dd.attlist;[ +<!ATTLIST %dd.qname; + %Common.attrib; +> +<!-- end of dd.attlist -->]]> + +<!-- ol: Ordered List (numbered styles) ................ --> + +<!ENTITY % ol.element "INCLUDE" > +<![%ol.element;[ +<!ENTITY % ol.content "( %li.qname; )+" > +<!ELEMENT %ol.qname; %ol.content; > +<!-- end of ol.element -->]]> + +<!ENTITY % ol.attlist "INCLUDE" > +<![%ol.attlist;[ +<!ATTLIST %ol.qname; + %Common.attrib; +> +<!-- end of ol.attlist -->]]> + +<!-- ul: Unordered List (bullet styles) ................ --> + +<!ENTITY % ul.element "INCLUDE" > +<![%ul.element;[ +<!ENTITY % ul.content "( %li.qname; )+" > +<!ELEMENT %ul.qname; %ul.content; > +<!-- end of ul.element -->]]> + +<!ENTITY % ul.attlist "INCLUDE" > +<![%ul.attlist;[ +<!ATTLIST %ul.qname; + %Common.attrib; +> +<!-- end of ul.attlist -->]]> + +<!-- li: List Item ..................................... --> + +<!ENTITY % li.element "INCLUDE" > +<![%li.element;[ +<!ENTITY % li.content + "( #PCDATA | %Flow.mix; )*" +> +<!ELEMENT %li.qname; %li.content; > +<!-- end of li.element -->]]> + +<!ENTITY % li.attlist "INCLUDE" > +<![%li.attlist;[ +<!ATTLIST %li.qname; + %Common.attrib; +> +<!-- end of li.attlist -->]]> + +<!-- end of xhtml-list-1.mod --> diff --git a/lv2specgen/DTD/xhtml-meta-1.mod b/lv2specgen/DTD/xhtml-meta-1.mod new file mode 100644 index 0000000..24a0b22 --- /dev/null +++ b/lv2specgen/DTD/xhtml-meta-1.mod @@ -0,0 +1,47 @@ +<!-- ...................................................................... --> +<!-- XHTML Document Metainformation Module ............................... --> +<!-- file: xhtml-meta-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-meta-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-meta-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Meta Information + + meta + + This module declares the meta element type and its attributes, + used to provide declarative document metainformation. +--> + +<!-- meta: Generic Metainformation ..................... --> + +<!ENTITY % meta.element "INCLUDE" > +<![%meta.element;[ +<!ENTITY % meta.content "EMPTY" > +<!ENTITY % meta.qname "meta" > +<!ELEMENT %meta.qname; %meta.content; > +<!-- end of meta.element -->]]> + +<!ENTITY % meta.attlist "INCLUDE" > +<![%meta.attlist;[ +<!ATTLIST %meta.qname; + %XHTML.xmlns.attrib; + %I18n.attrib; + http-equiv NMTOKEN #IMPLIED + name NMTOKEN #IMPLIED + content CDATA #REQUIRED + scheme CDATA #IMPLIED +> +<!-- end of meta.attlist -->]]> + +<!-- end of xhtml-meta-1.mod --> diff --git a/lv2specgen/DTD/xhtml-object-1.mod b/lv2specgen/DTD/xhtml-object-1.mod new file mode 100644 index 0000000..0d14cc5 --- /dev/null +++ b/lv2specgen/DTD/xhtml-object-1.mod @@ -0,0 +1,60 @@ +<!-- ...................................................................... --> +<!-- XHTML Embedded Object Module ........................................ --> +<!-- file: xhtml-object-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-object-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-object-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Embedded Objects + + object + + This module declares the object element type and its attributes, used + to embed external objects as part of XHTML pages. In the document, + place param elements prior to other content within the object element. + + Note that use of this module requires instantiation of the Param + Element Module. +--> + +<!-- object: Generic Embedded Object ................... --> + +<!ENTITY % object.element "INCLUDE" > +<![%object.element;[ +<!ENTITY % object.content + "( #PCDATA | %Flow.mix; | %param.qname; )*" +> +<!ENTITY % object.qname "object" > +<!ELEMENT %object.qname; %object.content; > +<!-- end of object.element -->]]> + +<!ENTITY % object.attlist "INCLUDE" > +<![%object.attlist;[ +<!ATTLIST %object.qname; + %Common.attrib; + declare ( declare ) #IMPLIED + classid %URI.datatype; #IMPLIED + codebase %URI.datatype; #IMPLIED + data %URI.datatype; #IMPLIED + type %ContentType.datatype; #IMPLIED + codetype %ContentType.datatype; #IMPLIED + archive %URIs.datatype; #IMPLIED + standby %Text.datatype; #IMPLIED + height %Length.datatype; #IMPLIED + width %Length.datatype; #IMPLIED + name CDATA #IMPLIED + tabindex %Number.datatype; #IMPLIED +> +<!-- end of object.attlist -->]]> + +<!-- end of xhtml-object-1.mod --> diff --git a/lv2specgen/DTD/xhtml-param-1.mod b/lv2specgen/DTD/xhtml-param-1.mod new file mode 100644 index 0000000..c101bed --- /dev/null +++ b/lv2specgen/DTD/xhtml-param-1.mod @@ -0,0 +1,48 @@ +<!-- ...................................................................... --> +<!-- XHTML Param Element Module ..................................... --> +<!-- file: xhtml-param-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-param-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-param-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Parameters for Java Applets and Embedded Objects + + param + + This module provides declarations for the param element, + used to provide named property values for the applet + and object elements. +--> + +<!-- param: Named Property Value ....................... --> + +<!ENTITY % param.element "INCLUDE" > +<![%param.element;[ +<!ENTITY % param.content "EMPTY" > +<!ENTITY % param.qname "param" > +<!ELEMENT %param.qname; %param.content; > +<!-- end of param.element -->]]> + +<!ENTITY % param.attlist "INCLUDE" > +<![%param.attlist;[ +<!ATTLIST %param.qname; + %XHTML.xmlns.attrib; + %id.attrib; + name CDATA #REQUIRED + value CDATA #IMPLIED + valuetype ( data | ref | object ) 'data' + type %ContentType.datatype; #IMPLIED +> +<!-- end of param.attlist -->]]> + +<!-- end of xhtml-param-1.mod --> diff --git a/lv2specgen/DTD/xhtml-pres-1.mod b/lv2specgen/DTD/xhtml-pres-1.mod new file mode 100644 index 0000000..df0a9eb --- /dev/null +++ b/lv2specgen/DTD/xhtml-pres-1.mod @@ -0,0 +1,38 @@ +<!-- ...................................................................... --> +<!-- XHTML Presentation Module ............................................ --> +<!-- file: xhtml-pres-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-pres-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-pres-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Presentational Elements + + This module defines elements and their attributes for + simple presentation-related markup. +--> + +<!ENTITY % xhtml-inlpres.module "INCLUDE" > +<![%xhtml-inlpres.module;[ +<!ENTITY % xhtml-inlpres.mod + PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN" + "xhtml-inlpres-1.mod" > +%xhtml-inlpres.mod;]]> + +<!ENTITY % xhtml-blkpres.module "INCLUDE" > +<![%xhtml-blkpres.module;[ +<!ENTITY % xhtml-blkpres.mod + PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN" + "xhtml-blkpres-1.mod" > +%xhtml-blkpres.mod;]]> + +<!-- end of xhtml-pres-1.mod --> diff --git a/lv2specgen/DTD/xhtml-qname-1.mod b/lv2specgen/DTD/xhtml-qname-1.mod new file mode 100644 index 0000000..9a4ba76 --- /dev/null +++ b/lv2specgen/DTD/xhtml-qname-1.mod @@ -0,0 +1,318 @@ +<!-- ....................................................................... --> +<!-- XHTML Qname Module ................................................... --> +<!-- file: xhtml-qname-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-qname-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-qname-1.mod" + + Revisions: + #2000-10-22: added qname declarations for ruby elements + ....................................................................... --> + +<!-- XHTML Qname (Qualified Name) Module + + This module is contained in two parts, labeled Section 'A' and 'B': + + Section A declares parameter entities to support namespace- + qualified names, namespace declarations, and name prefixing + for XHTML and extensions. + + Section B declares parameter entities used to provide + namespace-qualified names for all XHTML element types: + + %applet.qname; the xmlns-qualified name for <applet> + %base.qname; the xmlns-qualified name for <base> + ... + + XHTML extensions would create a module similar to this one. + Included in the XHTML distribution is a template module + ('template-qname-1.mod') suitable for this purpose. +--> + +<!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: --> + +<!-- 1. Declare a %XHTML.prefixed; conditional section keyword, used + to activate namespace prefixing. The default value should + inherit '%NS.prefixed;' from the DTD driver, so that unless + overridden, the default behaviour follows the overall DTD + prefixing scheme. +--> +<!ENTITY % NS.prefixed "IGNORE" > +<!ENTITY % XHTML.prefixed "%NS.prefixed;" > + +<!-- By default, we always permit XHTML attribute collections to have + namespace-qualified prefixes as well. +--> +<!ENTITY % XHTML.global.attrs.prefixed "INCLUDE" > +<!-- By default, we allow the XML Schema attributes on the root + element. +--> +<!ENTITY % XHTML.xsi.attrs "INCLUDE" > + +<!-- 2. Declare a parameter entity (eg., %XHTML.xmlns;) containing + the URI reference used to identify the XHTML namespace: +--> +<!ENTITY % XHTML.xmlns "http://www.w3.org/1999/xhtml" > + +<!-- 3. Declare parameter entities (eg., %XHTML.prefix;) containing + the default namespace prefix string(s) to use when prefixing + is enabled. This may be overridden in the DTD driver or the + internal subset of an document instance. If no default prefix + is desired, this may be declared as an empty string. + + NOTE: As specified in [XMLNAMES], the namespace prefix serves + as a proxy for the URI reference, and is not in itself significant. +--> +<!ENTITY % XHTML.prefix "xhtml" > + +<!-- 4. Declare parameter entities (eg., %XHTML.pfx;) containing the + colonized prefix(es) (eg., '%XHTML.prefix;:') used when + prefixing is active, an empty string when it is not. +--> +<![%XHTML.prefixed;[ +<!ENTITY % XHTML.pfx "%XHTML.prefix;:" > +]]> +<!ENTITY % XHTML.pfx "" > + +<!-- declare qualified name extensions here ............ --> +<!ENTITY % xhtml-qname-extra.mod "" > +%xhtml-qname-extra.mod; + +<!-- 5. The parameter entity %XHTML.xmlns.extra.attrib; may be + redeclared to contain any non-XHTML namespace declaration + attributes for namespaces embedded in XHTML. The default + is an empty string. XLink should be included here if used + in the DTD. +--> +<!ENTITY % XHTML.xmlns.extra.attrib "" > + +<!-- The remainder of Section A is only followed in XHTML, not extensions. --> + +<!-- Declare a parameter entity %NS.decl.attrib; containing + all XML Namespace declarations used in the DTD, plus the + xmlns declaration for XHTML, its form dependent on whether + prefixing is active. +--> +<!ENTITY % XHTML.xmlns.attrib.prefixed + "xmlns:%XHTML.prefix; %URI.datatype; #FIXED '%XHTML.xmlns;'" +> +<![%XHTML.prefixed;[ +<!ENTITY % NS.decl.attrib + "%XHTML.xmlns.attrib.prefixed; + %XHTML.xmlns.extra.attrib;" +> +]]> +<!ENTITY % NS.decl.attrib + "%XHTML.xmlns.extra.attrib;" +> + +<!-- Declare a parameter entity %XSI.prefix as a prefix to use for XML + Schema Instance attributes. +--> +<!ENTITY % XSI.prefix "xsi" > + +<!ENTITY % XSI.xmlns "http://www.w3.org/2001/XMLSchema-instance" > + +<!-- Declare a parameter entity %XSI.xmlns.attrib as support for the + schemaLocation attribute, since this is legal throughout the DTD. +--> +<!ENTITY % XSI.xmlns.attrib + "xmlns:%XSI.prefix; %URI.datatype; #FIXED '%XSI.xmlns;'" > + +<!-- This is a placeholder for future XLink support. +--> +<!ENTITY % XLINK.xmlns.attrib "" > + +<!-- This is the attribute for the XML Schema namespace - XHTML + Modularization is also expressed in XML Schema, and it needs to + be legal to declare the XML Schema namespace and the + schemaLocation attribute on the root element of XHTML family + documents. +--> +<![%XHTML.xsi.attrs;[ +<!ENTITY % XSI.prefix "xsi" > +<!ENTITY % XSI.pfx "%XSI.prefix;:" > +<!ENTITY % XSI.xmlns "http://www.w3.org/2001/XMLSchema-instance" > + +<!ENTITY % XSI.xmlns.attrib + "xmlns:%XSI.prefix; %URI.datatype; #FIXED '%XSI.xmlns;'" +> +]]> +<!ENTITY % XSI.prefix "" > +<!ENTITY % XSI.pfx "" > +<!ENTITY % XSI.xmlns.attrib "" > + + +<!-- Declare a parameter entity %NS.decl.attrib; containing all + XML namespace declaration attributes used by XHTML, including + a default xmlns attribute when prefixing is inactive. +--> +<![%XHTML.prefixed;[ +<!ENTITY % XHTML.xmlns.attrib + "%NS.decl.attrib; + %XSI.xmlns.attrib; + %XLINK.xmlns.attrib;" +> +]]> +<!ENTITY % XHTML.xmlns.attrib + "xmlns %URI.datatype; #FIXED '%XHTML.xmlns;' + %NS.decl.attrib; + %XSI.xmlns.attrib; + %XLINK.xmlns.attrib;" +> + +<!-- placeholder for qualified name redeclarations --> +<!ENTITY % xhtml-qname.redecl "" > +%xhtml-qname.redecl; + +<!-- Section B: XHTML Qualified Names ::::::::::::::::::::::::::::: --> + +<!-- 6. This section declares parameter entities used to provide + namespace-qualified names for all XHTML element types. +--> + +<!-- module: xhtml-applet-1.mod --> +<!ENTITY % applet.qname "%XHTML.pfx;applet" > + +<!-- module: xhtml-base-1.mod --> +<!ENTITY % base.qname "%XHTML.pfx;base" > + +<!-- module: xhtml-bdo-1.mod --> +<!ENTITY % bdo.qname "%XHTML.pfx;bdo" > + +<!-- module: xhtml-blkphras-1.mod --> +<!ENTITY % address.qname "%XHTML.pfx;address" > +<!ENTITY % blockquote.qname "%XHTML.pfx;blockquote" > +<!ENTITY % pre.qname "%XHTML.pfx;pre" > +<!ENTITY % h1.qname "%XHTML.pfx;h1" > +<!ENTITY % h2.qname "%XHTML.pfx;h2" > +<!ENTITY % h3.qname "%XHTML.pfx;h3" > +<!ENTITY % h4.qname "%XHTML.pfx;h4" > +<!ENTITY % h5.qname "%XHTML.pfx;h5" > +<!ENTITY % h6.qname "%XHTML.pfx;h6" > + +<!-- module: xhtml-blkpres-1.mod --> +<!ENTITY % hr.qname "%XHTML.pfx;hr" > + +<!-- module: xhtml-blkstruct-1.mod --> +<!ENTITY % div.qname "%XHTML.pfx;div" > +<!ENTITY % p.qname "%XHTML.pfx;p" > + +<!-- module: xhtml-edit-1.mod --> +<!ENTITY % ins.qname "%XHTML.pfx;ins" > +<!ENTITY % del.qname "%XHTML.pfx;del" > + +<!-- module: xhtml-form-1.mod --> +<!ENTITY % form.qname "%XHTML.pfx;form" > +<!ENTITY % label.qname "%XHTML.pfx;label" > +<!ENTITY % input.qname "%XHTML.pfx;input" > +<!ENTITY % select.qname "%XHTML.pfx;select" > +<!ENTITY % optgroup.qname "%XHTML.pfx;optgroup" > +<!ENTITY % option.qname "%XHTML.pfx;option" > +<!ENTITY % textarea.qname "%XHTML.pfx;textarea" > +<!ENTITY % fieldset.qname "%XHTML.pfx;fieldset" > +<!ENTITY % legend.qname "%XHTML.pfx;legend" > +<!ENTITY % button.qname "%XHTML.pfx;button" > + +<!-- module: xhtml-hypertext-1.mod --> +<!ENTITY % a.qname "%XHTML.pfx;a" > + +<!-- module: xhtml-image-1.mod --> +<!ENTITY % img.qname "%XHTML.pfx;img" > + +<!-- module: xhtml-inlphras-1.mod --> +<!ENTITY % abbr.qname "%XHTML.pfx;abbr" > +<!ENTITY % acronym.qname "%XHTML.pfx;acronym" > +<!ENTITY % cite.qname "%XHTML.pfx;cite" > +<!ENTITY % code.qname "%XHTML.pfx;code" > +<!ENTITY % dfn.qname "%XHTML.pfx;dfn" > +<!ENTITY % em.qname "%XHTML.pfx;em" > +<!ENTITY % kbd.qname "%XHTML.pfx;kbd" > +<!ENTITY % q.qname "%XHTML.pfx;q" > +<!ENTITY % samp.qname "%XHTML.pfx;samp" > +<!ENTITY % strong.qname "%XHTML.pfx;strong" > +<!ENTITY % var.qname "%XHTML.pfx;var" > + +<!-- module: xhtml-inlpres-1.mod --> +<!ENTITY % b.qname "%XHTML.pfx;b" > +<!ENTITY % big.qname "%XHTML.pfx;big" > +<!ENTITY % i.qname "%XHTML.pfx;i" > +<!ENTITY % small.qname "%XHTML.pfx;small" > +<!ENTITY % sub.qname "%XHTML.pfx;sub" > +<!ENTITY % sup.qname "%XHTML.pfx;sup" > +<!ENTITY % tt.qname "%XHTML.pfx;tt" > + +<!-- module: xhtml-inlstruct-1.mod --> +<!ENTITY % br.qname "%XHTML.pfx;br" > +<!ENTITY % span.qname "%XHTML.pfx;span" > + +<!-- module: xhtml-ismap-1.mod (also csismap, ssismap) --> +<!ENTITY % map.qname "%XHTML.pfx;map" > +<!ENTITY % area.qname "%XHTML.pfx;area" > + +<!-- module: xhtml-link-1.mod --> +<!ENTITY % link.qname "%XHTML.pfx;link" > + +<!-- module: xhtml-list-1.mod --> +<!ENTITY % dl.qname "%XHTML.pfx;dl" > +<!ENTITY % dt.qname "%XHTML.pfx;dt" > +<!ENTITY % dd.qname "%XHTML.pfx;dd" > +<!ENTITY % ol.qname "%XHTML.pfx;ol" > +<!ENTITY % ul.qname "%XHTML.pfx;ul" > +<!ENTITY % li.qname "%XHTML.pfx;li" > + +<!-- module: xhtml-meta-1.mod --> +<!ENTITY % meta.qname "%XHTML.pfx;meta" > + +<!-- module: xhtml-param-1.mod --> +<!ENTITY % param.qname "%XHTML.pfx;param" > + +<!-- module: xhtml-object-1.mod --> +<!ENTITY % object.qname "%XHTML.pfx;object" > + +<!-- module: xhtml-script-1.mod --> +<!ENTITY % script.qname "%XHTML.pfx;script" > +<!ENTITY % noscript.qname "%XHTML.pfx;noscript" > + +<!-- module: xhtml-struct-1.mod --> +<!ENTITY % html.qname "%XHTML.pfx;html" > +<!ENTITY % head.qname "%XHTML.pfx;head" > +<!ENTITY % title.qname "%XHTML.pfx;title" > +<!ENTITY % body.qname "%XHTML.pfx;body" > + +<!-- module: xhtml-style-1.mod --> +<!ENTITY % style.qname "%XHTML.pfx;style" > + +<!-- module: xhtml-table-1.mod --> +<!ENTITY % table.qname "%XHTML.pfx;table" > +<!ENTITY % caption.qname "%XHTML.pfx;caption" > +<!ENTITY % thead.qname "%XHTML.pfx;thead" > +<!ENTITY % tfoot.qname "%XHTML.pfx;tfoot" > +<!ENTITY % tbody.qname "%XHTML.pfx;tbody" > +<!ENTITY % colgroup.qname "%XHTML.pfx;colgroup" > +<!ENTITY % col.qname "%XHTML.pfx;col" > +<!ENTITY % tr.qname "%XHTML.pfx;tr" > +<!ENTITY % th.qname "%XHTML.pfx;th" > +<!ENTITY % td.qname "%XHTML.pfx;td" > + +<!-- module: xhtml-ruby-1.mod --> + +<!ENTITY % ruby.qname "%XHTML.pfx;ruby" > +<!ENTITY % rbc.qname "%XHTML.pfx;rbc" > +<!ENTITY % rtc.qname "%XHTML.pfx;rtc" > +<!ENTITY % rb.qname "%XHTML.pfx;rb" > +<!ENTITY % rt.qname "%XHTML.pfx;rt" > +<!ENTITY % rp.qname "%XHTML.pfx;rp" > + +<!-- Provisional XHTML 2.0 Qualified Names ...................... --> + +<!-- module: xhtml-image-2.mod --> +<!ENTITY % alt.qname "%XHTML.pfx;alt" > + +<!-- end of xhtml-qname-1.mod --> diff --git a/lv2specgen/DTD/xhtml-script-1.mod b/lv2specgen/DTD/xhtml-script-1.mod new file mode 100644 index 0000000..aa702f1 --- /dev/null +++ b/lv2specgen/DTD/xhtml-script-1.mod @@ -0,0 +1,67 @@ +<!-- ...................................................................... --> +<!-- XHTML Document Scripting Module ..................................... --> +<!-- file: xhtml-script-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-script-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-script-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Scripting + + script, noscript + + This module declares element types and attributes used to provide + support for executable scripts as well as an alternate content + container where scripts are not supported. +--> + +<!-- script: Scripting Statement ....................... --> + +<!ENTITY % script.element "INCLUDE" > +<![%script.element;[ +<!ENTITY % script.content "( #PCDATA )" > +<!ENTITY % script.qname "script" > +<!ELEMENT %script.qname; %script.content; > +<!-- end of script.element -->]]> + +<!ENTITY % script.attlist "INCLUDE" > +<![%script.attlist;[ +<!ATTLIST %script.qname; + %XHTML.xmlns.attrib; + %id.attrib; + xml:space ( preserve ) #FIXED 'preserve' + charset %Charset.datatype; #IMPLIED + type %ContentType.datatype; #REQUIRED + src %URI.datatype; #IMPLIED + defer ( defer ) #IMPLIED +> +<!-- end of script.attlist -->]]> + +<!-- noscript: No-Script Alternate Content ............. --> + +<!ENTITY % noscript.element "INCLUDE" > +<![%noscript.element;[ +<!ENTITY % noscript.content + "( %Block.mix; )+" +> +<!ENTITY % noscript.qname "noscript" > +<!ELEMENT %noscript.qname; %noscript.content; > +<!-- end of noscript.element -->]]> + +<!ENTITY % noscript.attlist "INCLUDE" > +<![%noscript.attlist;[ +<!ATTLIST %noscript.qname; + %Common.attrib; +> +<!-- end of noscript.attlist -->]]> + +<!-- end of xhtml-script-1.mod --> diff --git a/lv2specgen/DTD/xhtml-special.ent b/lv2specgen/DTD/xhtml-special.ent new file mode 100644 index 0000000..e76ce90 --- /dev/null +++ b/lv2specgen/DTD/xhtml-special.ent @@ -0,0 +1,89 @@ +<!-- ...................................................................... -->
+<!-- XML-compatible ISO Special Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-lat1.ent
+
+ Typical invocation:
+
+ <!ENTITY % xhtml-special
+ PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent" >
+ %xhtml-special;
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"
+
+ Revision: $Id: xhtml-special.ent,v 1.1 2001/02/13 12:24:22 ht Exp $ SMI
+
+ Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with conforming
+ SGML systems and applications as defined in ISO 8879, provided
+ this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. CDATA values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode 2.0 names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!--<!ENTITY quot """ >--> <!-- quotation mark = APL quote, U+0022 ISOnum -->
+<!--<!ENTITY amp "&" >--> <!-- ampersand, U+0026 ISOnum -->
+<!--<!ENTITY lt "<" >--> <!-- less-than sign, U+003C ISOnum -->
+<!--<!ENTITY gt ">" >--> <!-- greater-than sign, U+003E ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig "Œ" ><!-- latin capital ligature OE, U+0152 ISOlat2 -->
+<!ENTITY oelig "œ" ><!-- latin small ligature oe, U+0153 ISOlat2 -->
+
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron "Š" ><!-- latin capital letter S with caron,
+ U+0160 ISOlat2 -->
+<!ENTITY scaron "š" ><!-- latin small letter s with caron,
+ U+0161 ISOlat2 -->
+<!ENTITY Yuml "Ÿ" ><!-- latin capital letter Y with diaeresis,
+ U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ "ˆ" ><!-- modifier letter circumflex accent,
+ U+02C6 ISOpub -->
+<!ENTITY tilde "˜" ><!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp " " ><!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp " " ><!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp " " ><!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj "‌" ><!-- zero width non-joiner,
+ U+200C NEW RFC 2070 -->
+<!ENTITY zwj "‍" ><!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm "‎" ><!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm "‏" ><!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash "–" ><!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash "—" ><!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo "‘" ><!-- left single quotation mark,
+ U+2018 ISOnum -->
+<!ENTITY rsquo "’" ><!-- right single quotation mark,
+ U+2019 ISOnum -->
+<!ENTITY sbquo "‚" ><!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo "“" ><!-- left double quotation mark,
+ U+201C ISOnum -->
+<!ENTITY rdquo "”" ><!-- right double quotation mark,
+ U+201D ISOnum -->
+<!ENTITY bdquo "„" ><!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger "†" ><!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger "‡" ><!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil "‰" ><!-- per mille sign, U+2030 ISOtech -->
+
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY lsaquo "‹" ><!-- single left-pointing angle quotation mark,
+ U+2039 ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo "›" ><!-- single right-pointing angle quotation mark,
+ U+203A ISO proposed -->
+<!ENTITY euro "€" ><!-- euro sign, U+20AC NEW -->
+
+<!-- end of xhtml-special.ent -->
diff --git a/lv2specgen/DTD/xhtml-ssismap-1.mod b/lv2specgen/DTD/xhtml-ssismap-1.mod new file mode 100644 index 0000000..ebc4468 --- /dev/null +++ b/lv2specgen/DTD/xhtml-ssismap-1.mod @@ -0,0 +1,32 @@ +<!-- ...................................................................... --> +<!-- XHTML Server-side Image Map Module .................................. --> +<!-- file: xhtml-ssismap-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-ssismap-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-ssismap-1.mod" + + Revisions: +#2000-10-22: added declaration for 'ismap' on <input> + ....................................................................... --> + +<!-- Server-side Image Maps + + This adds the 'ismap' attribute to the img and input elements + to support server-side processing of a user selection. +--> + +<!ATTLIST %img.qname; + ismap ( ismap ) #IMPLIED +> + +<!ATTLIST %input.qname; + ismap ( ismap ) #IMPLIED +> + +<!-- end of xhtml-ssismap-1.mod --> diff --git a/lv2specgen/DTD/xhtml-struct-1.mod b/lv2specgen/DTD/xhtml-struct-1.mod new file mode 100644 index 0000000..4bb420e --- /dev/null +++ b/lv2specgen/DTD/xhtml-struct-1.mod @@ -0,0 +1,136 @@ +<!-- ...................................................................... --> +<!-- XHTML Structure Module .............................................. --> +<!-- file: xhtml-struct-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-struct-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-struct-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Document Structure + + title, head, body, html + + The Structure Module defines the major structural elements and + their attributes. + + Note that the content model of the head element type is redeclared + when the Base Module is included in the DTD. + + The parameter entity containing the XML namespace URI value used + for XHTML is '%XHTML.xmlns;', defined in the Qualified Names module. +--> + +<!-- title: Document Title ............................. --> + +<!-- The title element is not considered part of the flow of text. + It should be displayed, for example as the page header or + window title. Exactly one title is required per document. +--> + +<!ENTITY % title.element "INCLUDE" > +<![%title.element;[ +<!ENTITY % title.content "( #PCDATA )" > +<!ENTITY % title.qname "title" > +<!ELEMENT %title.qname; %title.content; > +<!-- end of title.element -->]]> + +<!ENTITY % title.attlist "INCLUDE" > +<![%title.attlist;[ +<!ATTLIST %title.qname; + %XHTML.xmlns.attrib; + %I18n.attrib; +> +<!-- end of title.attlist -->]]> + +<!-- head: Document Head ............................... --> + +<!ENTITY % head.element "INCLUDE" > +<![%head.element;[ +<!ENTITY % head.content + "( %HeadOpts.mix;, %title.qname;, %HeadOpts.mix; )" +> +<!ENTITY % head.qname "head" > +<!ELEMENT %head.qname; %head.content; > +<!-- end of head.element -->]]> + +<!ENTITY % head.attlist "INCLUDE" > +<![%head.attlist;[ +<!-- reserved for future use with document profiles +--> +<!ENTITY % profile.attrib + "profile %URIs.datatype; #IMPLIED" +> + +<!ATTLIST %head.qname; + %XHTML.xmlns.attrib; + %I18n.attrib; + %profile.attrib; + %id.attrib; +> +<!-- end of head.attlist -->]]> + +<!-- body: Document Body ............................... --> + +<!ENTITY % body.element "INCLUDE" > +<![%body.element;[ +<!ENTITY % body.content + "( %Block.mix; )*" +> +<!ENTITY % body.qname "body" > +<!ELEMENT %body.qname; %body.content; > +<!-- end of body.element -->]]> + +<!ENTITY % body.attlist "INCLUDE" > +<![%body.attlist;[ +<!ATTLIST %body.qname; + %Common.attrib; +> +<!-- end of body.attlist -->]]> + +<!-- html: XHTML Document Element ...................... --> + +<!ENTITY % html.element "INCLUDE" > +<![%html.element;[ +<!ENTITY % html.content "( %head.qname;, %body.qname; )" > +<!ENTITY % html.qname "html" > +<!ELEMENT %html.qname; %html.content; > +<!-- end of html.element -->]]> + +<![%XHTML.xsi.attrs;[ +<!-- define a parameter for the XSI schemaLocation attribute --> +<!ENTITY % XSI.schemaLocation.attrib + "%XSI.pfx;schemaLocation %URIs.datatype; #IMPLIED" +> +]]> +<!ENTITY % XSI.schemaLocation.attrib ""> + +<!ENTITY % html.attlist "INCLUDE" > +<![%html.attlist;[ +<!-- version attribute value defined in driver +--> +<!ENTITY % XHTML.version.attrib + "version %FPI.datatype; #FIXED '%XHTML.version;'" +> + +<!-- see the Qualified Names module for information + on how to extend XHTML using XML namespaces +--> +<!ATTLIST %html.qname; + %XHTML.xmlns.attrib; + %XSI.schemaLocation.attrib; + %XHTML.version.attrib; + %I18n.attrib; + %id.attrib; +> +<!-- end of html.attlist -->]]> + +<!-- end of xhtml-struct-1.mod --> diff --git a/lv2specgen/DTD/xhtml-style-1.mod b/lv2specgen/DTD/xhtml-style-1.mod new file mode 100644 index 0000000..3105b2a --- /dev/null +++ b/lv2specgen/DTD/xhtml-style-1.mod @@ -0,0 +1,48 @@ +<!-- ...................................................................... --> +<!-- XHTML Document Style Sheet Module ................................... --> +<!-- file: xhtml-style-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-style-1.mod,v 4.1 2001/04/05 06:57:40 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//DTD XHTML Style Sheets 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-style-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Style Sheets + + style + + This module declares the style element type and its attributes, + used to embed style sheet information in the document head element. +--> + +<!-- style: Style Sheet Information .................... --> + +<!ENTITY % style.element "INCLUDE" > +<![%style.element;[ +<!ENTITY % style.content "( #PCDATA )" > +<!ENTITY % style.qname "style" > +<!ELEMENT %style.qname; %style.content; > +<!-- end of style.element -->]]> + +<!ENTITY % style.attlist "INCLUDE" > +<![%style.attlist;[ +<!ATTLIST %style.qname; + %XHTML.xmlns.attrib; + %id.attrib; + %title.attrib; + %I18n.attrib; + xml:space ( preserve ) #FIXED 'preserve' + type %ContentType.datatype; #REQUIRED + media %MediaDesc.datatype; #IMPLIED +> +<!-- end of style.attlist -->]]> + +<!-- end of xhtml-style-1.mod --> diff --git a/lv2specgen/DTD/xhtml-symbol.ent b/lv2specgen/DTD/xhtml-symbol.ent new file mode 100644 index 0000000..f72df1f --- /dev/null +++ b/lv2specgen/DTD/xhtml-symbol.ent @@ -0,0 +1,235 @@ +<!-- ...................................................................... --> +<!-- ISO Math, Greek and Symbolic Character Entity Set for XHTML .......... --> +<!-- file: xhtml-lat1.ent + + Typical invocation: + + <!ENTITY % xhtml-symbol + PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent" > + %xhtml-symbol; + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN" + SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent" + + Revision: $Id: xhtml-symbol.ent,v 1.1 2001/02/13 12:24:23 ht Exp $ SMI + + Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with conforming + SGML systems and applications as defined in ISO 8879, provided + this notice is included in all copies. +--> + +<!-- Relevant ISO entity set is given unless names are newly introduced. + New names (i.e., not in ISO 8879 list) do not clash with any + existing ISO 8879 entity names. ISO 10646 character numbers + are given for each character, in hex. CDATA values are decimal + conversions of the ISO 10646 values and refer to the document + character set. Names are Unicode 2.0 names. +--> + +<!-- Latin Extended-B --> +<!ENTITY fnof "ƒ" ><!-- latin small f with hook = function + = florin, U+0192 ISOtech --> + +<!-- Greek --> +<!ENTITY Alpha "Α" ><!-- greek capital letter alpha, U+0391 --> +<!ENTITY Beta "Β" ><!-- greek capital letter beta, U+0392 --> +<!ENTITY Gamma "Γ" ><!-- greek capital letter gamma, U+0393 ISOgrk3 --> +<!ENTITY Delta "Δ" ><!-- greek capital letter delta, U+0394 ISOgrk3 --> +<!ENTITY Epsilon "Ε" ><!-- greek capital letter epsilon, U+0395 --> +<!ENTITY Zeta "Ζ" ><!-- greek capital letter zeta, U+0396 --> +<!ENTITY Eta "Η" ><!-- greek capital letter eta, U+0397 --> +<!ENTITY Theta "Θ" ><!-- greek capital letter theta, U+0398 ISOgrk3 --> +<!ENTITY Iota "Ι" ><!-- greek capital letter iota, U+0399 --> +<!ENTITY Kappa "Κ" ><!-- greek capital letter kappa, U+039A --> +<!ENTITY Lambda "Λ" ><!-- greek capital letter lambda, U+039B ISOgrk3 --> +<!ENTITY Mu "Μ" ><!-- greek capital letter mu, U+039C --> +<!ENTITY Nu "Ν" ><!-- greek capital letter nu, U+039D --> +<!ENTITY Xi "Ξ" ><!-- greek capital letter xi, U+039E ISOgrk3 --> +<!ENTITY Omicron "Ο" ><!-- greek capital letter omicron, U+039F --> +<!ENTITY Pi "Π" ><!-- greek capital letter pi, U+03A0 ISOgrk3 --> +<!ENTITY Rho "Ρ" ><!-- greek capital letter rho, U+03A1 --> +<!-- there is no Sigmaf, and no U+03A2 character either --> +<!ENTITY Sigma "Σ" ><!-- greek capital letter sigma, U+03A3 ISOgrk3 --> +<!ENTITY Tau "Τ" ><!-- greek capital letter tau, U+03A4 --> +<!ENTITY Upsilon "Υ" ><!-- greek capital letter upsilon, + U+03A5 ISOgrk3 --> +<!ENTITY Phi "Φ" ><!-- greek capital letter phi, U+03A6 ISOgrk3 --> +<!ENTITY Chi "Χ" ><!-- greek capital letter chi, U+03A7 --> +<!ENTITY Psi "Ψ" ><!-- greek capital letter psi, U+03A8 ISOgrk3 --> +<!ENTITY Omega "Ω" ><!-- greek capital letter omega, U+03A9 ISOgrk3 --> +<!ENTITY alpha "α" ><!-- greek small letter alpha, U+03B1 ISOgrk3 --> +<!ENTITY beta "β" ><!-- greek small letter beta, U+03B2 ISOgrk3 --> +<!ENTITY gamma "γ" ><!-- greek small letter gamma, U+03B3 ISOgrk3 --> +<!ENTITY delta "δ" ><!-- greek small letter delta, U+03B4 ISOgrk3 --> +<!ENTITY epsilon "ε" ><!-- greek small letter epsilon, U+03B5 ISOgrk3 --> +<!ENTITY zeta "ζ" ><!-- greek small letter zeta, U+03B6 ISOgrk3 --> +<!ENTITY eta "η" ><!-- greek small letter eta, U+03B7 ISOgrk3 --> +<!ENTITY theta "θ" ><!-- greek small letter theta, U+03B8 ISOgrk3 --> +<!ENTITY iota "ι" ><!-- greek small letter iota, U+03B9 ISOgrk3 --> +<!ENTITY kappa "κ" ><!-- greek small letter kappa, U+03BA ISOgrk3 --> +<!ENTITY lambda "λ" ><!-- greek small letter lambda, U+03BB ISOgrk3 --> +<!ENTITY mu "μ" ><!-- greek small letter mu, U+03BC ISOgrk3 --> +<!ENTITY nu "ν" ><!-- greek small letter nu, U+03BD ISOgrk3 --> +<!ENTITY xi "ξ" ><!-- greek small letter xi, U+03BE ISOgrk3 --> +<!ENTITY omicron "ο" ><!-- greek small letter omicron, U+03BF NEW --> +<!ENTITY pi "π" ><!-- greek small letter pi, U+03C0 ISOgrk3 --> +<!ENTITY rho "ρ" ><!-- greek small letter rho, U+03C1 ISOgrk3 --> +<!ENTITY sigmaf "ς" ><!-- greek small letter final sigma, + U+03C2 ISOgrk3 --> +<!ENTITY sigma "σ" ><!-- greek small letter sigma, U+03C3 ISOgrk3 --> +<!ENTITY tau "τ" ><!-- greek small letter tau, U+03C4 ISOgrk3 --> +<!ENTITY upsilon "υ" ><!-- greek small letter upsilon, + U+03C5 ISOgrk3 --> +<!ENTITY phi "φ" ><!-- greek small letter phi, U+03C6 ISOgrk3 --> +<!ENTITY chi "χ" ><!-- greek small letter chi, U+03C7 ISOgrk3 --> +<!ENTITY psi "ψ" ><!-- greek small letter psi, U+03C8 ISOgrk3 --> +<!ENTITY omega "ω" ><!-- greek small letter omega, U+03C9 ISOgrk3 --> +<!ENTITY thetasym "ϑ" ><!-- greek small letter theta symbol, + U+03D1 NEW --> +<!ENTITY upsih "ϒ" ><!-- greek upsilon with hook symbol, + U+03D2 NEW --> +<!ENTITY piv "ϖ" ><!-- greek pi symbol, U+03D6 ISOgrk3 --> + +<!-- General Punctuation --> +<!ENTITY bull "•" ><!-- bullet = black small circle, + U+2022 ISOpub --> +<!-- bullet is NOT the same as bullet operator, U+2219 --> +<!ENTITY hellip "…" ><!-- horizontal ellipsis = three dot leader, + U+2026 ISOpub --> +<!ENTITY prime "′" ><!-- prime = minutes = feet, U+2032 ISOtech --> +<!ENTITY Prime "″" ><!-- double prime = seconds = inches, + U+2033 ISOtech --> +<!ENTITY oline "‾" ><!-- overline = spacing overscore, + U+203E NEW --> +<!ENTITY frasl "⁄" ><!-- fraction slash, U+2044 NEW --> + +<!-- Letterlike Symbols --> +<!ENTITY weierp "℘" ><!-- script capital P = power set + = Weierstrass p, U+2118 ISOamso --> +<!ENTITY image "ℑ" ><!-- blackletter capital I = imaginary part, + U+2111 ISOamso --> +<!ENTITY real "ℜ" ><!-- blackletter capital R = real part symbol, + U+211C ISOamso --> +<!ENTITY trade "™" ><!-- trade mark sign, U+2122 ISOnum --> +<!ENTITY alefsym "ℵ" ><!-- alef symbol = first transfinite cardinal, + U+2135 NEW --> +<!-- alef symbol is NOT the same as hebrew letter alef, + U+05D0 although the same glyph could be used to depict both characters --> + +<!-- Arrows --> +<!ENTITY larr "←" ><!-- leftwards arrow, U+2190 ISOnum --> +<!ENTITY uarr "↑" ><!-- upwards arrow, U+2191 ISOnum--> +<!ENTITY rarr "→" ><!-- rightwards arrow, U+2192 ISOnum --> +<!ENTITY darr "↓" ><!-- downwards arrow, U+2193 ISOnum --> +<!ENTITY harr "↔" ><!-- left right arrow, U+2194 ISOamsa --> +<!ENTITY crarr "↵" ><!-- downwards arrow with corner leftwards + = carriage return, U+21B5 NEW --> +<!ENTITY lArr "⇐" ><!-- leftwards double arrow, U+21D0 ISOtech --> +<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow + but also does not have any other character for that function. So ? lArr can + be used for 'is implied by' as ISOtech suggests --> +<!ENTITY uArr "⇑" ><!-- upwards double arrow, U+21D1 ISOamsa --> +<!ENTITY rArr "⇒" ><!-- rightwards double arrow, + U+21D2 ISOtech --> +<!-- Unicode does not say this is the 'implies' character but does not have + another character with this function so ? + rArr can be used for 'implies' as ISOtech suggests --> +<!ENTITY dArr "⇓" ><!-- downwards double arrow, U+21D3 ISOamsa --> +<!ENTITY hArr "⇔" ><!-- left right double arrow, + U+21D4 ISOamsa --> + +<!-- Mathematical Operators --> +<!ENTITY forall "∀" ><!-- for all, U+2200 ISOtech --> +<!ENTITY part "∂" ><!-- partial differential, U+2202 ISOtech --> +<!ENTITY exist "∃" ><!-- there exists, U+2203 ISOtech --> +<!ENTITY empty "∅" ><!-- empty set = null set = diameter, + U+2205 ISOamso --> +<!ENTITY nabla "∇" ><!-- nabla = backward difference, + U+2207 ISOtech --> +<!ENTITY isin "∈" ><!-- element of, U+2208 ISOtech --> +<!ENTITY notin "∉" ><!-- not an element of, U+2209 ISOtech --> +<!ENTITY ni "∋" ><!-- contains as member, U+220B ISOtech --> +<!-- should there be a more memorable name than 'ni'? --> +<!ENTITY prod "∏" ><!-- n-ary product = product sign, + U+220F ISOamsb --> +<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though + the same glyph might be used for both --> +<!ENTITY sum "∑" ><!-- n-ary sumation, U+2211 ISOamsb --> +<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma' + though the same glyph might be used for both --> +<!ENTITY minus "−" ><!-- minus sign, U+2212 ISOtech --> +<!ENTITY lowast "∗" ><!-- asterisk operator, U+2217 ISOtech --> +<!ENTITY radic "√" ><!-- square root = radical sign, + U+221A ISOtech --> +<!ENTITY prop "∝" ><!-- proportional to, U+221D ISOtech --> +<!ENTITY infin "∞" ><!-- infinity, U+221E ISOtech --> +<!ENTITY ang "∠" ><!-- angle, U+2220 ISOamso --> +<!ENTITY and "∧" ><!-- logical and = wedge, U+2227 ISOtech --> +<!ENTITY or "∨" ><!-- logical or = vee, U+2228 ISOtech --> +<!ENTITY cap "∩" ><!-- intersection = cap, U+2229 ISOtech --> +<!ENTITY cup "∪" ><!-- union = cup, U+222A ISOtech --> +<!ENTITY int "∫" ><!-- integral, U+222B ISOtech --> +<!ENTITY there4 "∴" ><!-- therefore, U+2234 ISOtech --> +<!ENTITY sim "∼" ><!-- tilde operator = varies with = similar to, + U+223C ISOtech --> +<!-- tilde operator is NOT the same character as the tilde, U+007E, + although the same glyph might be used to represent both --> +<!ENTITY cong "≅" ><!-- approximately equal to, U+2245 ISOtech --> +<!ENTITY asymp "≈" ><!-- almost equal to = asymptotic to, + U+2248 ISOamsr --> +<!ENTITY ne "≠" ><!-- not equal to, U+2260 ISOtech --> +<!ENTITY equiv "≡" ><!-- identical to, U+2261 ISOtech --> +<!ENTITY le "≤" ><!-- less-than or equal to, U+2264 ISOtech --> +<!ENTITY ge "≥" ><!-- greater-than or equal to, + U+2265 ISOtech --> +<!ENTITY sub "⊂" ><!-- subset of, U+2282 ISOtech --> +<!ENTITY sup "⊃" ><!-- superset of, U+2283 ISOtech --> +<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol + font encoding and is not included. Should it be, for symmetry? + It is in ISOamsn --> +<!ENTITY nsub "⊄" ><!-- not a subset of, U+2284 ISOamsn --> +<!ENTITY sube "⊆" ><!-- subset of or equal to, U+2286 ISOtech --> +<!ENTITY supe "⊇" ><!-- superset of or equal to, + U+2287 ISOtech --> +<!ENTITY oplus "⊕" ><!-- circled plus = direct sum, + U+2295 ISOamsb --> +<!ENTITY otimes "⊗" ><!-- circled times = vector product, + U+2297 ISOamsb --> +<!ENTITY perp "⊥" ><!-- up tack = orthogonal to = perpendicular, + U+22A5 ISOtech --> +<!ENTITY sdot "⋅" ><!-- dot operator, U+22C5 ISOamsb --> +<!-- dot operator is NOT the same character as U+00B7 middle dot --> + +<!-- Miscellaneous Technical --> +<!ENTITY lceil "⌈" ><!-- left ceiling = apl upstile, + U+2308 ISOamsc --> +<!ENTITY rceil "⌉" ><!-- right ceiling, U+2309 ISOamsc --> +<!ENTITY lfloor "⌊" ><!-- left floor = apl downstile, + U+230A ISOamsc --> +<!ENTITY rfloor "⌋" ><!-- right floor, U+230B ISOamsc --> +<!ENTITY lang "〈" ><!-- left-pointing angle bracket = bra, + U+2329 ISOtech --> +<!-- lang is NOT the same character as U+003C 'less than' + or U+2039 'single left-pointing angle quotation mark' --> +<!ENTITY rang "〉" ><!-- right-pointing angle bracket = ket, + U+232A ISOtech --> +<!-- rang is NOT the same character as U+003E 'greater than' + or U+203A 'single right-pointing angle quotation mark' --> + +<!-- Geometric Shapes --> +<!ENTITY loz "◊" ><!-- lozenge, U+25CA ISOpub --> + +<!-- Miscellaneous Symbols --> +<!ENTITY spades "♠" ><!-- black spade suit, U+2660 ISOpub --> +<!-- black here seems to mean filled as opposed to hollow --> +<!ENTITY clubs "♣" ><!-- black club suit = shamrock, + U+2663 ISOpub --> +<!ENTITY hearts "♥" ><!-- black heart suit = valentine, + U+2665 ISOpub --> +<!ENTITY diams "♦" ><!-- black diamond suit, U+2666 ISOpub --> + +<!-- end of xhtml-symbol.ent --> diff --git a/lv2specgen/DTD/xhtml-table-1.mod b/lv2specgen/DTD/xhtml-table-1.mod new file mode 100644 index 0000000..4a59c35 --- /dev/null +++ b/lv2specgen/DTD/xhtml-table-1.mod @@ -0,0 +1,333 @@ +<!-- ...................................................................... --> +<!-- XHTML Table Module .................................................. --> +<!-- file: xhtml-table-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-table-1.mod,v 1.4 2008/10/08 21:02:31 jules Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-table-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Tables + + table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td + + This module declares element types and attributes used to provide + table markup similar to HTML 4, including features that enable + better accessibility for non-visual user agents. +--> + +<!-- declare qualified element type names: +--> +<!ENTITY % table.qname "table" > +<!ENTITY % caption.qname "caption" > +<!ENTITY % thead.qname "thead" > +<!ENTITY % tfoot.qname "tfoot" > +<!ENTITY % tbody.qname "tbody" > +<!ENTITY % colgroup.qname "colgroup" > +<!ENTITY % col.qname "col" > +<!ENTITY % tr.qname "tr" > +<!ENTITY % th.qname "th" > +<!ENTITY % td.qname "td" > + +<!-- The frame attribute specifies which parts of the frame around + the table should be rendered. The values are not the same as + CALS to avoid a name clash with the valign attribute. +--> +<!ENTITY % frame.attrib + "frame ( void + | above + | below + | hsides + | lhs + | rhs + | vsides + | box + | border ) #IMPLIED" +> + +<!-- The rules attribute defines which rules to draw between cells: + + If rules is absent then assume: + + "none" if border is absent or border="0" otherwise "all" +--> +<!ENTITY % rules.attrib + "rules ( none + | groups + | rows + | cols + | all ) #IMPLIED" +> + +<!-- horizontal alignment attributes for cell contents +--> +<!ENTITY % CellHAlign.attrib + "align ( left + | center + | right + | justify + | char ) #IMPLIED + char %Character.datatype; #IMPLIED + charoff %Length.datatype; #IMPLIED" +> + +<!-- vertical alignment attribute for cell contents +--> +<!ENTITY % CellVAlign.attrib + "valign ( top + | middle + | bottom + | baseline ) #IMPLIED" +> + +<!-- scope is simpler than axes attribute for common tables +--> +<!ENTITY % scope.attrib + "scope ( row + | col + | rowgroup + | colgroup ) #IMPLIED" +> + +<!-- table: Table Element .............................. --> + +<!ENTITY % table.element "INCLUDE" > +<![%table.element;[ +<!ENTITY % table.content + "( %caption.qname;?, ( %col.qname;* | %colgroup.qname;* ), + (( %thead.qname;?, %tfoot.qname;?, %tbody.qname;+ ) | ( %tr.qname;+ )))" +> +<!ELEMENT %table.qname; %table.content; > +<!-- end of table.element -->]]> + +<!ENTITY % table.attlist "INCLUDE" > +<![%table.attlist;[ +<!ATTLIST %table.qname; + %Common.attrib; + summary %Text.datatype; #IMPLIED + width %Length.datatype; #IMPLIED + border %Pixels.datatype; #IMPLIED + %frame.attrib; + %rules.attrib; + cellspacing %Length.datatype; #IMPLIED + cellpadding %Length.datatype; #IMPLIED +> +<!-- end of table.attlist -->]]> + +<!-- caption: Table Caption ............................ --> + +<!ENTITY % caption.element "INCLUDE" > +<![%caption.element;[ +<!ENTITY % caption.content + "( #PCDATA | %Inline.mix; )*" +> +<!ELEMENT %caption.qname; %caption.content; > +<!-- end of caption.element -->]]> + +<!ENTITY % caption.attlist "INCLUDE" > +<![%caption.attlist;[ +<!ATTLIST %caption.qname; + %Common.attrib; +> +<!-- end of caption.attlist -->]]> + +<!-- thead: Table Header ............................... --> + +<!-- Use thead to duplicate headers when breaking table + across page boundaries, or for static headers when + tbody sections are rendered in scrolling panel. +--> + +<!ENTITY % thead.element "INCLUDE" > +<![%thead.element;[ +<!ENTITY % thead.content "( %tr.qname; )+" > +<!ELEMENT %thead.qname; %thead.content; > +<!-- end of thead.element -->]]> + +<!ENTITY % thead.attlist "INCLUDE" > +<![%thead.attlist;[ +<!ATTLIST %thead.qname; + %Common.attrib; + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of thead.attlist -->]]> + +<!-- tfoot: Table Footer ............................... --> + +<!-- Use tfoot to duplicate footers when breaking table + across page boundaries, or for static footers when + tbody sections are rendered in scrolling panel. +--> + +<!ENTITY % tfoot.element "INCLUDE" > +<![%tfoot.element;[ +<!ENTITY % tfoot.content "( %tr.qname; )+" > +<!ELEMENT %tfoot.qname; %tfoot.content; > +<!-- end of tfoot.element -->]]> + +<!ENTITY % tfoot.attlist "INCLUDE" > +<![%tfoot.attlist;[ +<!ATTLIST %tfoot.qname; + %Common.attrib; + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of tfoot.attlist -->]]> + +<!-- tbody: Table Body ................................. --> + +<!-- Use multiple tbody sections when rules are needed + between groups of table rows. +--> + +<!ENTITY % tbody.element "INCLUDE" > +<![%tbody.element;[ +<!ENTITY % tbody.content "( %tr.qname; )+" > +<!ELEMENT %tbody.qname; %tbody.content; > +<!-- end of tbody.element -->]]> + +<!ENTITY % tbody.attlist "INCLUDE" > +<![%tbody.attlist;[ +<!ATTLIST %tbody.qname; + %Common.attrib; + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of tbody.attlist -->]]> + +<!-- colgroup: Table Column Group ...................... --> + +<!-- colgroup groups a set of col elements. It allows you + to group several semantically-related columns together. +--> + +<!ENTITY % colgroup.element "INCLUDE" > +<![%colgroup.element;[ +<!ENTITY % colgroup.content "( %col.qname; )*" > +<!ELEMENT %colgroup.qname; %colgroup.content; > +<!-- end of colgroup.element -->]]> + +<!ENTITY % colgroup.attlist "INCLUDE" > +<![%colgroup.attlist;[ +<!ATTLIST %colgroup.qname; + %Common.attrib; + span %Number.datatype; '1' + width %MultiLength.datatype; #IMPLIED + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of colgroup.attlist -->]]> + +<!-- col: Table Column ................................. --> + +<!-- col elements define the alignment properties for + cells in one or more columns. + + The width attribute specifies the width of the + columns, e.g. + + width="64" width in screen pixels + width="0.5*" relative width of 0.5 + + The span attribute causes the attributes of one + col element to apply to more than one column. +--> + +<!ENTITY % col.element "INCLUDE" > +<![%col.element;[ +<!ENTITY % col.content "EMPTY" > +<!ELEMENT %col.qname; %col.content; > +<!-- end of col.element -->]]> + +<!ENTITY % col.attlist "INCLUDE" > +<![%col.attlist;[ +<!ATTLIST %col.qname; + %Common.attrib; + span %Number.datatype; '1' + width %MultiLength.datatype; #IMPLIED + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of col.attlist -->]]> + +<!-- tr: Table Row ..................................... --> + +<!ENTITY % tr.element "INCLUDE" > +<![%tr.element;[ +<!ENTITY % tr.content "( %th.qname; | %td.qname; )+" > +<!ELEMENT %tr.qname; %tr.content; > +<!-- end of tr.element -->]]> + +<!ENTITY % tr.attlist "INCLUDE" > +<![%tr.attlist;[ +<!ATTLIST %tr.qname; + %Common.attrib; + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of tr.attlist -->]]> + +<!-- th: Table Header Cell ............................. --> + +<!-- th is for header cells, td for data, + but for cells acting as both use td +--> + +<!ENTITY % th.element "INCLUDE" > +<![%th.element;[ +<!ENTITY % th.content + "( #PCDATA | %Flow.mix; )*" +> +<!ELEMENT %th.qname; %th.content; > +<!-- end of th.element -->]]> + +<!ENTITY % th.attlist "INCLUDE" > +<![%th.attlist;[ +<!ATTLIST %th.qname; + %Common.attrib; + abbr %Text.datatype; #IMPLIED + axis CDATA #IMPLIED + headers IDREFS #IMPLIED + %scope.attrib; + rowspan %Number.datatype; '1' + colspan %Number.datatype; '1' + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of th.attlist -->]]> + +<!-- td: Table Data Cell ............................... --> + +<!ENTITY % td.element "INCLUDE" > +<![%td.element;[ +<!ENTITY % td.content + "( #PCDATA | %Flow.mix; )*" +> +<!ELEMENT %td.qname; %td.content; > +<!-- end of td.element -->]]> + +<!ENTITY % td.attlist "INCLUDE" > +<![%td.attlist;[ +<!ATTLIST %td.qname; + %Common.attrib; + abbr %Text.datatype; #IMPLIED + axis CDATA #IMPLIED + headers IDREFS #IMPLIED + %scope.attrib; + rowspan %Number.datatype; '1' + colspan %Number.datatype; '1' + %CellHAlign.attrib; + %CellVAlign.attrib; +> +<!-- end of td.attlist -->]]> + +<!-- end of xhtml-table-1.mod --> diff --git a/lv2specgen/DTD/xhtml-target-1.mod b/lv2specgen/DTD/xhtml-target-1.mod new file mode 100644 index 0000000..3739ef1 --- /dev/null +++ b/lv2specgen/DTD/xhtml-target-1.mod @@ -0,0 +1,53 @@ +<!-- ...................................................................... --> +<!-- XHTML Target Module ................................................. --> +<!-- file: xhtml-target-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-target-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Target 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-target-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Target + + target + + This module declares the 'target' attribute used for opening windows +--> + +<!-- render in this frame --> +<!ENTITY % FrameTarget.datatype "CDATA" > + +<!-- add 'target' attribute to 'a' element --> +<!ATTLIST %a.qname; + target %FrameTarget.datatype; #IMPLIED +> + +<!-- add 'target' attribute to 'area' element --> +<!ATTLIST %area.qname; + target %FrameTarget.datatype; #IMPLIED +> + +<!-- add 'target' attribute to 'link' element --> +<!ATTLIST %link.qname; + target %FrameTarget.datatype; #IMPLIED +> + +<!-- add 'target' attribute to 'form' element --> +<!ATTLIST %form.qname; + target %FrameTarget.datatype; #IMPLIED +> + +<!-- add 'target' attribute to 'base' element --> +<!ATTLIST %base.qname; + target %FrameTarget.datatype; #IMPLIED +> + +<!-- end of xhtml-target-1.mod --> diff --git a/lv2specgen/DTD/xhtml-text-1.mod b/lv2specgen/DTD/xhtml-text-1.mod new file mode 100644 index 0000000..07ccb81 --- /dev/null +++ b/lv2specgen/DTD/xhtml-text-1.mod @@ -0,0 +1,52 @@ +<!-- ...................................................................... --> +<!-- XHTML Text Module ................................................... --> +<!-- file: xhtml-text-1.mod + + This is XHTML, a reformulation of HTML as a modular XML application. + Copyright 1998-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-text-1.mod,v 4.0 2001/04/02 22:42:49 altheim Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-text-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- Textual Content + + The Text module includes declarations for all core + text container elements and their attributes. +--> + +<!ENTITY % xhtml-inlstruct.module "INCLUDE" > +<![%xhtml-inlstruct.module;[ +<!ENTITY % xhtml-inlstruct.mod + PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN" + "xhtml-inlstruct-1.mod" > +%xhtml-inlstruct.mod;]]> + +<!ENTITY % xhtml-inlphras.module "INCLUDE" > +<![%xhtml-inlphras.module;[ +<!ENTITY % xhtml-inlphras.mod + PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN" + "xhtml-inlphras-1.mod" > +%xhtml-inlphras.mod;]]> + +<!ENTITY % xhtml-blkstruct.module "INCLUDE" > +<![%xhtml-blkstruct.module;[ +<!ENTITY % xhtml-blkstruct.mod + PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN" + "xhtml-blkstruct-1.mod" > +%xhtml-blkstruct.mod;]]> + +<!ENTITY % xhtml-blkphras.module "INCLUDE" > +<![%xhtml-blkphras.module;[ +<!ENTITY % xhtml-blkphras.mod + PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN" + "xhtml-blkphras-1.mod" > +%xhtml-blkphras.mod;]]> + +<!-- end of xhtml-text-1.mod --> diff --git a/lv2specgen/lv2docgen.py b/lv2specgen/lv2docgen.py new file mode 100755 index 0000000..23a239d --- /dev/null +++ b/lv2specgen/lv2docgen.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# lv2docgen, a documentation generator for LV2 plugins +# Copyright 2012 David Robillard <d@drobilla.net> +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +import errno +import os +import sys + +__date__ = '2012-03-27' +__version__ = '0.0.0' +__authors__ = 'David Robillard' +__license__ = 'ISC License <http://www.opensource.org/licenses/isc>' +__contact__ = 'devel@lists.lv2plug.in' + +try: + import rdflib +except ImportError: + sys.exit('Error importing rdflib') + +doap = rdflib.Namespace('http://usefulinc.com/ns/doap#') +lv2 = rdflib.Namespace('http://lv2plug.in/ns/lv2core#') +rdf = rdflib.Namespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#') +rdfs = rdflib.Namespace('http://www.w3.org/2000/01/rdf-schema#') + +def uri_to_path(uri): + path = uri[uri.find(':'):] + while not path[0].isalpha(): + path = path[1:] + return path + +def get_doc(model, subject): + comment = model.value(subject, rdfs.comment, None) + if comment: + return '<p class="content">%s</p>' % comment + return '' + +def port_doc(model, port): + name = model.value(port, lv2.name, None) + comment = model.value(port, rdfs.comment, None) + html = '<div class="specterm"><h3>%s</h3>' % name + html += get_doc(model, port) + html += '</div>' + return html + +def plugin_doc(model, plugin, style_uri): + uri = str(plugin) + name = model.value(plugin, doap.name, None) + + html = '''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> +<html about="%s" + xmlns="http://www.w3.org/1999/xhtml" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:lv2="http://lv2plug.in/ns/lv2core#" + xml:lang="en">''' % uri + + html += '''<head> + <title>%s</title> + <meta http-equiv="content-type" content="text/xhtml+xml; charset=utf-8" /> + <meta name="generator" content="lv2docgen" /> + <link href="%s" rel="stylesheet" type="text/css" /> + </head> + <body>''' % (name, style_uri) + + html += ''' + <!-- HEADER --> + <div id="header"> + <h1 id="title">%s</h1> + <table id="meta"> + <tr><th>URI</th><td><a href="%s">%s</a></td></tr> + <tr><th>Version</th><td>%s</td></tr> + </table> + </div> +''' % (name, uri, uri, '0.0.0') + + html += get_doc(model, plugin) + + ports_html = '' + for p in model.triples([plugin, lv2.port, None]): + ports_html += port_doc(model, p[2]) + + if len(ports_html): + html += ''' + <h2 class="sec">Ports</h2> + <div class="content"> +%s + </div>''' % ports_html + + html += ' </body></html>' + return html + +if __name__ == '__main__': + 'LV2 plugin documentation generator' + + if len(sys.argv) < 2: + print('Usage: %s OUTDIR FILE...' % sys.argv[0]) + sys.exit(1) + + outdir = sys.argv[1] + files = sys.argv[2:] + model = rdflib.ConjunctiveGraph() + for f in files: + model.parse(f, format='n3') + + style_uri = os.path.abspath(os.path.join(outdir, 'style.css')) + for p in model.triples([None, rdf.type, lv2.Plugin]): + plugin = p[0] + html = plugin_doc(model, plugin, style_uri) + path = uri_to_path(plugin) + + outpath = os.path.join(outdir, path + '.html') + try: + os.makedirs(os.path.dirname(outpath)) + except OSError: + e = sys.exc_info()[1] + if e.errno == errno.EEXIST: + pass + else: + raise + + print('Writing <%s> documentation to %s' % (plugin, outpath)) + out = open(outpath, 'w') + out.write(html) + out.close() diff --git a/lv2specgen/lv2specgen.py b/lv2specgen/lv2specgen.py new file mode 100755 index 0000000..ddd0ba5 --- /dev/null +++ b/lv2specgen/lv2specgen.py @@ -0,0 +1,1525 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# lv2specgen, a documentation generator for LV2 specifications. +# Copyright (c) 2009-2014 David Robillard <d@drobilla.net> +# +# Based on SpecGen: +# <http://forge.morfeo-project.org/wiki_en/index.php/SpecGen> +# Copyright (c) 2003-2008 Christopher Schmidt <crschmidt@crschmidt.net> +# Copyright (c) 2005-2008 Uldis Bojars <uldis.bojars@deri.org> +# Copyright (c) 2007-2008 Sergio Fernández <sergio.fernandez@fundacionctic.org> +# +# This software is licensed under the terms of the MIT License. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import datetime +import optparse +import os +import re +import sys +import time +import xml.sax.saxutils +import xml.dom +import xml.dom.minidom + +__date__ = "2011-10-26" +__version__ = __date__.replace('-', '.') +__authors__ = """ +Christopher Schmidt, +Uldis Bojars, +Sergio Fernández, +David Robillard""" +__license__ = "MIT License <http://www.opensource.org/licenses/mit>" +__contact__ = "devel@lists.lv2plug.in" + +try: + from lxml import etree + have_lxml = True +except: + have_lxml = False + +try: + import pygments + import pygments.lexers + import pygments.formatters + from pygments.lexer import RegexLexer, include, bygroups + from pygments.token import Text, Comment, Operator, Keyword, Name, String, Literal, Punctuation + have_pygments = True +except ImportError: + print("Error importing pygments, syntax highlighting disabled") + have_pygments = False + +try: + import rdflib +except ImportError: + sys.exit("Error importing rdflib") + +# Global Variables +classranges = {} +classdomains = {} +linkmap = {} +spec_url = None +spec_ns_str = None +spec_ns = None +spec_pre = None +spec_bundle = None +specgendir = None +ns_list = { + "http://www.w3.org/1999/02/22-rdf-syntax-ns#" : "rdf", + "http://www.w3.org/2000/01/rdf-schema#" : "rdfs", + "http://www.w3.org/2002/07/owl#" : "owl", + "http://www.w3.org/2001/XMLSchema#" : "xsd", + "http://rdfs.org/sioc/ns#" : "sioc", + "http://xmlns.com/foaf/0.1/" : "foaf", + "http://purl.org/dc/elements/1.1/" : "dc", + "http://purl.org/dc/terms/" : "dct", + "http://purl.org/rss/1.0/modules/content/" : "content", + "http://www.w3.org/2003/01/geo/wgs84_pos#" : "geo", + "http://www.w3.org/2004/02/skos/core#" : "skos", + "http://lv2plug.in/ns/lv2core#" : "lv2", + "http://usefulinc.com/ns/doap#" : "doap", + "http://ontologi.es/doap-changeset#" : "dcs" +} + +rdf = rdflib.Namespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#') +rdfs = rdflib.Namespace('http://www.w3.org/2000/01/rdf-schema#') +owl = rdflib.Namespace('http://www.w3.org/2002/07/owl#') +lv2 = rdflib.Namespace('http://lv2plug.in/ns/lv2core#') +doap = rdflib.Namespace('http://usefulinc.com/ns/doap#') +dcs = rdflib.Namespace('http://ontologi.es/doap-changeset#') +foaf = rdflib.Namespace('http://xmlns.com/foaf/0.1/') + + +def findStatements(model, s, p, o): + return model.triples([s, p, o]) + + +def findOne(m, s, p, o): + l = findStatements(m, s, p, o) + try: + return sorted(l)[0] + except: + return None + + +def getSubject(s): + return s[0] + + +def getPredicate(s): + return s[1] + + +def getObject(s): + return s[2] + + +def getLiteralString(s): + return s + + +def isResource(n): + return type(n) == rdflib.URIRef + + +def isBlank(n): + return type(n) == rdflib.BNode + + +def isLiteral(n): + return type(n) == rdflib.Literal + + +def niceName(uri): + global spec_bundle + if uri.startswith(spec_bundle): + return uri[len(spec_bundle):] + + regexp = re.compile("^(.*[/#])([^/#]+)$") + rez = regexp.search(uri) + if not rez: + return uri + pref = rez.group(1) + if pref in ns_list: + return ns_list.get(pref, pref) + ":" + rez.group(2) + else: + print("warning: prefix %s not in ns list:" % pref) + print(ns_list) + return uri + + +def termName(m, urinode): + "Trims the namespace out of a term to give a name to the term." + return str(urinode).replace(spec_ns_str, "") + + +def getLabel(m, urinode): + l = findOne(m, urinode, rdfs.label, None) + if l: + return getLiteralString(getObject(l)) + else: + return '' + +if have_pygments: + # Based on sw.py by Philip Cooper + class Notation3Lexer(RegexLexer): + """ + Lexer for N3 / Turtle / NT + """ + name = 'N3' + aliases = ['n3', 'turtle'] + filenames = ['*.n3', '*.ttl', '*.nt'] + mimetypes = ['text/rdf+n3','application/x-turtle','application/n3'] + + tokens = { + 'comments': [ + (r'(\s*#.*)', Comment) + ], + 'root': [ + include('comments'), + (r'(\s*@(?:prefix|base|keywords)\s*)(\w*:\s+)?(<[^> ]*>\s*\.\s*)',bygroups(Keyword,Name.Variable,Name.Namespace)), + (r'\s*(<[^>]*\>)', Name.Class, ('triple','predObj')), + (r'(\s*[a-zA-Z_:][a-zA-Z0-9\-_:]*\s)', Name.Class, ('triple','predObj')), + (r'\s*\[\]\s*', Name.Class, ('triple','predObj')), + ], + 'triple' : [ + (r'\s*\.\s*', Text, '#pop') + ], + 'predObj': [ + include('comments'), + (r'\s*a\s*', Name.Keyword, 'object'), + (r'\s*[a-zA-Z_:][a-zA-Z0-9\-_:]*\b\s*', Name.Tag, 'object'), + (r'\s*(<[^>]*\>)', Name.Tag, 'object'), + (r'\s*\]\s*', Text, '#pop'), + (r'(?=\s*\.\s*)', Keyword, '#pop'), + ], + 'objList': [ + include('comments'), + (r'\s*\)', Text, '#pop'), + include('object') + ], + 'object': [ + include('comments'), + (r'\s*\[', Text, 'predObj'), + (r'\s*<[^> ]*>', Name.Tag), + (r'\s*("""(?:.|\n)*?""")(\@[a-z]{2-4}|\^\^<?[a-zA-Z0-9\-\:_#/\.]*>?)?\s*', bygroups(Literal.String,Text)), + (r'\s*".*?[^\\]"(?:\@[a-z]{2-4}|\^\^<?[a-zA-Z0-9\-\:_#/\.]*>?)?\s*', Literal.String), + (r'\s*[0-9]+\.[0-9]*\s*\n?', Literal.Number), + (r'\s*[0-9]+\s*\n?', Literal.Number), + (r'\s*[a-zA-Z0-9\-_\:]+\s*', Name.Tag), + (r'\s*\(', Text, 'objList'), + (r'\s*;\s*\n?', Punctuation, '#pop'), + (r'\s*,\s*\n?', Punctuation), # Added by drobilla so "," is not an error + (r'(?=\s*\])', Text, '#pop'), + (r'(?=\s*\.)', Text, '#pop'), + ], + } + +def linkify(string): + if linkmap == {}: + return string + + "Add links to code documentation for identifiers" + if string in linkmap.keys(): + # Exact match for complete string + return linkmap[string] + + rgx = re.compile('([^a-zA-Z0-9_:])(' + \ + '|'.join(map(re.escape, linkmap)) + \ + ')([^a-zA-Z0-9_:])') + + def translateCodeLink(match): + return match.group(1) + linkmap[match.group(2)] + match.group(3) + + return rgx.sub(translateCodeLink, string) + +def getComment(m, urinode, classlist, proplist, instalist): + c = findOne(m, urinode, lv2.documentation, None) + if c: + markup = getLiteralString(getObject(c)) + + # Syntax highlight all C code + if have_pygments: + code_rgx = re.compile('<pre class="c-code">(.*?)</pre>', re.DOTALL) + while True: + code = code_rgx.search(markup) + if not code: + break + match_str = xml.sax.saxutils.unescape(code.group(1)) + code_str = pygments.highlight( + match_str, + pygments.lexers.CLexer(), + pygments.formatters.HtmlFormatter()) + markup = code_rgx.sub(code_str, markup, 1) + + # Syntax highlight all Turtle code + if have_pygments: + code_rgx = re.compile('<pre class="turtle-code">(.*?)</pre>', re.DOTALL) + while True: + code = code_rgx.search(markup) + if not code: + break + match_str = xml.sax.saxutils.unescape(code.group(1)) + code_str = pygments.highlight( + match_str, + Notation3Lexer(), + pygments.formatters.HtmlFormatter()) + markup = code_rgx.sub(code_str, markup, 1) + + # Add links to code documentation for identifiers + markup = linkify(markup) + + # Transform prefixed names like eg:something into links if possible + rgx = re.compile('([a-zA-Z0-9_-]+):([a-zA-Z0-9_-]+)') + namespaces = getNamespaces(m) + def translateLink(match): + text = match.group(0) + prefix = match.group(1) + name = match.group(2) + curie = match.group(0) + uri = rdflib.URIRef(spec_ns + name) + if prefix == spec_pre: + if not ((classlist and uri in classlist) or + (instalist and uri in instalist) or + (proplist and uri in proplist)): + print("warning: Link to undefined resource <%s>\n" % text) + return '<a href="#%s">%s</a>' % (name, curie) + elif prefix in namespaces: + return '<a href="%s">%s</a>' % ( + namespaces[match.group(1)] + match.group(2), + match.group(0)) + else: + return text + markup = rgx.sub(translateLink, markup) + + # Transform names like #foo into links into this spec if possible + rgx = re.compile('([ \t\n\r\f\v^]+)\#([a-zA-Z0-9_-]+)') + def translateLocalLink(match): + text = match.group(0) + space = match.group(1) + name = match.group(2) + uri = rdflib.URIRef(spec_ns + name) + if ((classlist and uri in classlist) or + (instalist and uri in instalist) or + (proplist and uri in proplist)): + return '%s<a href="#%s">%s</a>' % (space, name, name) + else: + print("warning: Link to undefined resource <%s>\n" % name) + return text + markup = rgx.sub(translateLocalLink, markup) + + if have_lxml: + try: + # Parse and validate documentation as XHTML Basic 1.1 + doc = """<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" + "DTD/xhtml-basic11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> + <head xml:lang="en" profile="profile"> + <title>Validation Skeleton Document</title> + </head> + <body> +%s + </body> +</html> +""" % str(markup.decode()) + + oldcwd = os.getcwd() + os.chdir(specgendir) + parser = etree.XMLParser(dtd_validation=True, no_network=True) + root = etree.fromstring(doc, parser) + os.chdir(oldcwd) + except Exception as e: + print("Invalid lv2:documentation for %s\n%s" % (urinode, e)) + line_num = 1 + for line in doc.split('\n'): + print('%3d: %s' % (line_num, line)) + line_num += 1 + + return markup + + c = findOne(m, urinode, rdfs.comment, None) + if c: + text = getLiteralString(getObject(c)) + return '<p>%s</p>' % xml.sax.saxutils.escape(text) + + return '' + + +def getProperty(val, first=True): + "Return a string representing a property value in a property table" + doc = '' + if not first: + doc += '<tr><td></td>' # Empty cell in header column + doc += '<td>%s</td></tr>\n' % val + return doc + + +def endProperties(first): + if first: + return '</tr>' + else: + return '' + + +def rdfsPropertyInfo(term, m): + """Generate HTML for properties: Domain, range""" + global classranges + global classdomains + doc = "" + range = "" + domain = "" + + # Find subPropertyOf information + rlist = '' + first = True + for st in findStatements(m, term, rdfs.subPropertyOf, None): + k = getTermLink(getObject(st), term, rdfs.subPropertyOf) + rlist += getProperty(k, first) + first = False + if rlist != '': + doc += '<tr><th>Sub-property of</th>' + rlist + + # Domain stuff + domains = findStatements(m, term, rdfs.domain, None) + domainsdoc = "" + first = True + for d in sorted(domains): + union = findOne(m, getObject(d), owl.unionOf, None) + if union: + uris = parseCollection(m, getObject(union)) + for uri in uris: + domainsdoc += getProperty(getTermLink(uri, term, rdfs.domain), first) + add(classdomains, uri, term) + else: + if not isBlank(getObject(d)): + domainsdoc += getProperty(getTermLink(getObject(d), term, rdfs.domain), first) + first = False + if (len(domainsdoc) > 0): + doc += "<tr><th>Domain</th>%s" % domainsdoc + + # Range stuff + ranges = findStatements(m, term, rdfs.range, None) + rangesdoc = "" + first = True + for r in sorted(ranges): + union = findOne(m, getObject(r), owl.unionOf, None) + if union: + uris = parseCollection(m, getObject(union)) + for uri in uris: + rangesdoc += getProperty(getTermLink(uri, term, rdfs.range), first) + add(classranges, uri, term) + first = False + else: + if not isBlank(getObject(r)): + rangesdoc += getProperty(getTermLink(getObject(r), term, rdfs.range), first) + first = False + if (len(rangesdoc) > 0): + doc += "<tr><th>Range</th>%s" % rangesdoc + + return doc + + +def parseCollection(model, node): + uris = [] + + while node: + first = findOne(model, node, rdf.first, None) + rest = findOne(model, node, rdf.rest, None) + if not first or not rest: + break; + + uris.append(getObject(first)) + node = getObject(rest) + + return uris + + +def getTermLink(uri, subject=None, predicate=None): + uri = str(uri) + extra = '' + if subject is not None and predicate is not None: + extra = 'about="%s" rel="%s" resource="%s"' % (str(subject), niceName(str(predicate)), uri) + if (uri.startswith(spec_ns_str)): + return '<a href="#%s" %s>%s</a>' % (uri.replace(spec_ns_str, ""), extra, niceName(uri)) + else: + return '<a href="%s" %s>%s</a>' % (uri, extra, niceName(uri)) + + +def rdfsClassInfo(term, m): + """Generate rdfs-type information for Classes: ranges, and domains.""" + global classranges + global classdomains + doc = "" + + # Find subClassOf information + restrictions = [] + superclasses = [] + for st in findStatements(m, term, rdfs.subClassOf, None): + if not isBlank(getObject(st)): + uri = getObject(st) + if not uri in superclasses: + superclasses.append(uri) + else: + meta_type = findOne(m, getObject(st), rdf.type, None) + restrictions.append(getSubject(meta_type)) + + if len(superclasses) > 0: + superclasses.sort() + doc += "\n<tr><th>Sub-class of</th>" + first = True + for superclass in superclasses: + doc += getProperty(getTermLink(superclass), first) + first = False + + for r in sorted(restrictions): + props = findStatements(m, r, None, None) + onProp = None + comment = None + for p in props: + if getPredicate(p) == owl.onProperty: + onProp = getObject(p) + elif getPredicate(p) == rdfs.comment: + comment = getObject(p) + if onProp is not None: + doc += '<tr><th>Restriction on %s</th><td>' % getTermLink(onProp) + + prop_str = '' + last_pred = None + first = True + for p in findStatements(m, r, None, None): + if (getPredicate(p) == owl.onProperty + or getPredicate(p) == rdfs.comment + or (getPredicate(p) == rdf.type and getObject(p) == owl.Restriction) + or getPredicate(p) == lv2.documentation): + last_pred = None + continue + + if getPredicate(p) != last_pred: + prop_str += '<tr><th>%s</th>\n' % getTermLink(getPredicate(p)) + first = True + if isResource(getObject(p)): + prop_str += getProperty(getTermLink(getObject(p)), first) + first = False + elif isLiteral(getObject(p)): + prop_str += getProperty(getLiteralString(getObject(p)), first) + first = False + + last_pred = getPredicate(p) + + prop_str += endProperties(first) + + if prop_str != '': + doc += '<table class=\"restriction\">%s</table>\n' % prop_str + if comment is not None: + doc += "<span>%s</span>\n" % getLiteralString(comment) + doc += '</td></tr>' + + # Find out about properties which have rdfs:domain of t + d = classdomains.get(str(term), "") + if d: + d.sort() + dlist = '' + first = True + for k in d: + dlist += getProperty(getTermLink(k), first) + first = False + doc += "<tr><th>In domain of</th>%s" % dlist + + # Find out about properties which have rdfs:range of t + r = classranges.get(str(term), "") + if r: + r.sort() + rlist = '' + first = True + for k in r: + rlist += getProperty(getTermLink(k), first) + first = False + doc += "<tr><th>In range of</th>%s" % rlist + + return doc + + +def isSpecial(pred): + """Return True if the predicate is "special" and shouldn't be emitted generically""" + return pred in [rdf.type, rdfs.range, rdfs.domain, rdfs.label, rdfs.comment, rdfs.subClassOf, rdfs.subPropertyOf, lv2.documentation] + + +def blankNodeDesc(node, m): + properties = findStatements(m, node, None, None) + doc = '' + last_pred = '' + for p in sorted(properties): + if isSpecial(getPredicate(p)): + continue + doc += '<tr>' + doc += '<td class="blankterm">%s</td>\n' % getTermLink(getPredicate(p)) + if isResource(getObject(p)): + doc += '<td class="blankdef">%s</td>\n' % getTermLink(getObject(p)) + # getTermLink(str(getObject(p)), node, getPredicate(p)) + elif isLiteral(getObject(p)): + doc += '<td class="blankdef">%s</td>\n' % getLiteralString(getObject(p)) + elif isBlank(getObject(p)): + doc += '<td class="blankdef">' + blankNodeDesc(getObject(p), m) + '</td>\n' + else: + doc += '<td class="blankdef">?</td>\n' + doc += '</tr>' + if doc != '': + doc = '<table class="blankdesc">\n%s\n</table>\n' % doc + return doc + + +def extraInfo(term, m): + """Generate information about misc. properties of a term""" + doc = "" + properties = findStatements(m, term, None, None) + first = True + for p in sorted(properties): + if isSpecial(getPredicate(p)): + continue + doc += '<tr><th>%s</th>\n' % getTermLink(getPredicate(p)) + if isResource(getObject(p)): + doc += getProperty(getTermLink(getObject(p), term, getPredicate(p)), first) + elif isLiteral(getObject(p)): + doc += getProperty(linkify(str(getObject(p))), first) + elif isBlank(getObject(p)): + doc += getProperty(str(blankNodeDesc(getObject(p), m)), first) + else: + doc += getProperty('?', first) + + #doc += endProperties(first) + + return doc + + +def rdfsInstanceInfo(term, m): + """Generate rdfs-type information for instances""" + doc = "" + + first = True + for match in sorted(findStatements(m, term, rdf.type, None)): + doc += getProperty(getTermLink(getObject(match), + term, + rdf.type), + first) + first = False + + if doc != "": + doc = "<tr><th>Type</th>" + doc + + doc += endProperties(first) + + return doc + + +def owlInfo(term, m): + """Returns an extra information that is defined about a term using OWL.""" + res = '' + + # Inverse properties ( owl:inverseOf ) + first = True + for st in findStatements(m, term, owl.inverseOf, None): + res += getProperty(getTermLink(getObject(st)), first) + first = False + if res != "": + res += endProperties(first) + res = "<tr><th>Inverse:</th>\n" + res + + def owlTypeInfo(term, propertyType, name): + if findOne(m, term, rdf.type, propertyType): + return "<tr><th>OWL Type</th><td>%s</td></tr>\n" % name + else: + return "" + + res += owlTypeInfo(term, owl.DatatypeProperty, "Datatype Property") + res += owlTypeInfo(term, owl.ObjectProperty, "Object Property") + res += owlTypeInfo(term, owl.AnnotationProperty, "Annotation Property") + res += owlTypeInfo(term, owl.InverseFunctionalProperty, "Inverse Functional Property") + res += owlTypeInfo(term, owl.SymmetricProperty, "Symmetric Property") + + return res + +def isDeprecated(m, subject): + deprecated = findOne(m, subject, owl.deprecated, None) + return deprecated and (str(deprecated[2]).find("true") >= 0) + +def docTerms(category, list, m, classlist, proplist, instalist): + """ + A wrapper class for listing all the terms in a specific class (either + Properties, or Classes. Category is 'Property' or 'Class', list is a + list of term names (strings), return value is a chunk of HTML. + """ + doc = "" + nspre = spec_pre + for item in list: + t = termName(m, item) + if (t.startswith(spec_ns_str)) and ( + len(t[len(spec_ns_str):].split("/")) < 2): + term = t + t = t.split(spec_ns_str[-1])[1] + curie = "%s:%s" % (nspre, t) + else: + if t.startswith("http://"): + term = t + curie = getShortName(t) + t = getAnchor(t) + else: + term = spec_ns[t] + curie = "%s:%s" % (nspre, t) + + term_uri = term + + doc += """<div class="specterm" id="%s" about="%s">\n<h3>%s <a href="#%s">%s</a></h3>\n""" % (t, term_uri, category, getAnchor(str(term_uri)), curie) + + label = getLabel(m, term) + comment = getComment(m, term, classlist, proplist, instalist) + is_deprecated = isDeprecated(m, term) + + doc += '<div class="spectermbody">' + if label != '' or comment != '' or is_deprecated: + doc += '<div class="description">' + + if label != '': + doc += "<div property=\"rdfs:label\" class=\"label\">%s</div>" % label + + if is_deprecated: + doc += '<div class="warning">DEPRECATED</div>' + + if comment != '': + doc += "<div property=\"rdfs:comment\">%s</div>" % comment + + if label != '' or comment != '' or is_deprecated: + doc += "</div>" + + terminfo = "" + if category == 'Property': + terminfo += owlInfo(term, m) + terminfo += rdfsPropertyInfo(term, m) + if category == 'Class': + terminfo += rdfsClassInfo(term, m) + if category == 'Instance': + terminfo += rdfsInstanceInfo(term, m) + + terminfo += extraInfo(term, m) + + if (len(terminfo) > 0): # to prevent empty list (bug #882) + doc += '\n<table class="terminfo">%s</table>\n' % terminfo + + doc += '</div>' + doc += "\n</div>\n\n" + + return doc + + +def getShortName(uri): + uri = str(uri) + if ("#" in uri): + return uri.split("#")[-1] + else: + return uri.split("/")[-1] + + +def getAnchor(uri): + uri = str(uri) + if (uri.startswith(spec_ns_str)): + return uri[len(spec_ns_str):].replace("/", "_") + else: + return getShortName(uri) + + +def buildIndex(m, classlist, proplist, instalist=None, filelist=None): + if not (classlist or proplist or instalist or filelist): + return '' + + head = '<tr>' + body = '<tr>' + + def termLink(m, t): + if str(t).startswith(spec_ns_str): + name = termName(m, t) + return '<a href="#%s">%s</a>' % (name, name) + else: + return '<a href="%s">%s</a>' % (str(t), str(t)) + + if (len(classlist) > 0): + head += '<th>Classes</th>' + body += '<td><ul>' + classlist.sort() + shown = {} + for c in classlist: + if c in shown: + continue + + # Skip classes that are subclasses of classes defined in this spec + local_subclass = False + for p in findStatements(m, c, rdfs.subClassOf, None): + parent = str(p[2]) + if parent[0:len(spec_ns_str)] == spec_ns_str: + local_subclass = True + if local_subclass: + continue + + shown[c] = True + body += '<li>' + termLink(m, c) + def class_tree(c): + tree = '' + shown[c] = True + + subclasses = [] + for s in findStatements(m, None, rdfs.subClassOf, c): + subclasses += [getSubject(s)] + subclasses.sort() + + for s in subclasses: + tree += '<li>' + termLink(m, s) + tree += class_tree(s) + tree += '</li>' + if tree != '': + tree = '<ul>' + tree + '</ul>' + return tree + body += class_tree(c) + body += '</li>' + body += '</ul></td>\n' + + if (len(proplist) > 0): + head += '<th>Properties</th>' + body += '<td><ul>' + proplist.sort() + for p in proplist: + body += '<li>%s</li>' % termLink(m, p) + body += '</ul></td>\n' + + if (instalist is not None and len(instalist) > 0): + head += '<th>Instances</th>' + body += '<td><ul>' + instalist.sort() + for i in instalist: + p = getShortName(i) + anchor = getAnchor(i) + body += '<li><a href="#%s">%s</a></li>' % (anchor, p) + body += '</ul></td>\n' + + if (filelist is not None and len(filelist) > 0): + head += '<th>Files</th>' + body += '<td><ul>' + filelist.sort() + for i in filelist: + p = getShortName(i) + anchor = getAnchor(i) + body += '<li><a href="%s">%s</a></li>' % (i, os.path.basename(i)) + body += '</ul></td>\n' + + head += '</tr>' + body += '</tr>' + return '<table class="index"><thead>%s</thead>\n<tbody>%s</tbody></table>' % (head, body) + + +def add(where, key, value): + if not key in where: + where[key] = [] + if not value in where[key]: + where[key].append(value) + + +def specInformation(m, ns): + """ + Read through the spec (provided as a Redland model) and return classlist + and proplist. Global variables classranges and classdomains are also filled + as appropriate. + """ + global classranges + global classdomains + + # Find the class information: Ranges, domains, and list of all names. + classtypes = [rdfs.Class, owl.Class, rdfs.Datatype] + classlist = [] + for onetype in classtypes: + for classStatement in findStatements(m, None, rdf.type, onetype): + for range in findStatements(m, None, rdfs.range, getSubject(classStatement)): + if not isBlank(getSubject(classStatement)): + add(classranges, + str(getSubject(classStatement)), + str(getSubject(range))) + for domain in findStatements(m, None, rdfs.domain, getSubject(classStatement)): + if not isBlank(getSubject(classStatement)): + add(classdomains, + str(getSubject(classStatement)), + str(getSubject(domain))) + if not isBlank(getSubject(classStatement)): + klass = getSubject(classStatement) + if klass not in classlist and str(klass).startswith(ns): + classlist.append(klass) + + # Create a list of properties in the schema. + proptypes = [rdf.Property, owl.ObjectProperty, owl.DatatypeProperty, owl.AnnotationProperty] + proplist = [] + for onetype in proptypes: + for propertyStatement in findStatements(m, None, rdf.type, onetype): + prop = getSubject(propertyStatement) + if prop not in proplist and str(prop).startswith(ns): + proplist.append(prop) + + return classlist, proplist + + +def specProperty(m, subject, predicate): + "Return a property of the spec." + for c in findStatements(m, subject, predicate, None): + return getLiteralString(getObject(c)) + return '' + + +def specProperties(m, subject, predicate): + "Return a property of the spec." + properties = [] + for c in findStatements(m, subject, predicate, None): + properties += [getObject(c)] + return properties + + +def specAuthors(m, subject): + "Return an HTML description of the authors of the spec." + + subjects = [subject]; + p = findOne(m, subject, lv2.project, None) + if p: + subjects += [getObject(p)] + + dev = set() + for s in subjects: + for i in findStatements(m, s, doap.developer, None): + for j in findStatements(m, getObject(i), foaf.name, None): + dev.add(getLiteralString(getObject(j))) + + maint = set() + for s in subjects: + for i in findStatements(m, s, doap.maintainer, None): + for j in findStatements(m, getObject(i), foaf.name, None): + maint.add(getLiteralString(getObject(j))) + + doc = '' + + devdoc = '' + first = True + for d in dev: + if not first: + devdoc += ', ' + devdoc += '<span class="author" property="doap:developer">%s</span>' % d + first = False + if len(dev) == 1: + doc += '<tr><th class="metahead">Developer</th><td>%s</td></tr>' % devdoc + elif len(dev) > 0: + doc += '<tr><th class="metahead">Developers</th><td>%s</td></tr>' % devdoc + + maintdoc = '' + first = True + for m in maint: + if not first: + maintdoc += ', ' + maintdoc += '<span class="author" property="doap:maintainer">%s</span>' % m + first = False + if len(maint) == 1: + doc += '<tr><th class="metahead">Maintainer</th><td>%s</td></tr>' % maintdoc + elif len(maint) > 0: + doc += '<tr><th class="metahead">Maintainers</th><td>%s</td></tr>' % maintdoc + + return doc + + +def releaseChangeset(m, release, prefix=''): + changeset = findOne(m, release, dcs.changeset, None) + if changeset is None: + return '' + + entry = '' + #entry = '<dd><ul>\n' + for i in sorted(findStatements(m, getObject(changeset), dcs.item, None)): + item = getObject(i) + label = findOne(m, item, rdfs.label, None) + if not label: + print("error: dcs:item has no rdfs:label") + continue + + text = getLiteralString(getObject(label)) + if prefix: + text = prefix + ': ' + text + + entry += '<li>%s</li>\n' % text + + #entry += '</ul></dd>\n' + return entry + + +def specHistoryEntries(m, subject, entries): + for r in findStatements(m, subject, doap.release, None): + release = getObject(r) + revNode = findOne(m, release, doap.revision, None) + if not revNode: + print("error: doap:release has no doap:revision") + continue + + rev = getLiteralString(getObject(revNode)) + + created = findOne(m, release, doap.created, None) + + dist = findOne(m, release, doap['file-release'], None) + if dist: + entry = '<dt><a href="%s">Version %s</a>' % (getObject(dist), rev) + else: + entry = '<dt>Version %s' % rev + #print("warning: doap:release has no doap:file-release") + + if created: + entry += ' (%s)</dt>\n' % getLiteralString(getObject(created)) + else: + entry += ' (<span class="warning">EXPERIMENTAL</span>)</dt>' + + entry += '<dd><ul>\n%s' % releaseChangeset(m, release) + + if dist is not None: + entries[(getObject(created), getObject(dist))] = entry + + return entries + + +def specHistoryMarkup(entries): + if len(entries) > 0: + history = '<dl>\n' + for e in sorted(entries.keys(), reverse=True): + history += entries[e] + '</ul></dd>' + history += '</dl>\n' + return history + else: + return '' + + +def specHistory(m, subject): + return specHistoryMarkup(specHistoryEntries(m, subject, {})) + + +def specVersion(m, subject): + """ + Return a (minorVersion, microVersion, date) tuple + """ + # Get the date from the latest doap release + latest_doap_revision = "" + latest_doap_release = None + for i in findStatements(m, subject, doap.release, None): + for j in findStatements(m, getObject(i), doap.revision, None): + revision = getLiteralString(getObject(j)) + if latest_doap_revision == "" or revision > latest_doap_revision: + latest_doap_revision = revision + latest_doap_release = getObject(i) + date = "" + if latest_doap_release is not None: + for i in findStatements(m, latest_doap_release, doap.created, None): + date = getLiteralString(getObject(i)) + + # Get the LV2 version + minor_version = 0 + micro_version = 0 + for i in findStatements(m, None, lv2.minorVersion, None): + minor_version = int(getLiteralString(getObject(i))) + for i in findStatements(m, None, lv2.microVersion, None): + micro_version = int(getLiteralString(getObject(i))) + return (minor_version, micro_version, date) + + +def getInstances(model, classes, properties): + """ + Extract all resources instanced in the ontology + (aka "everything that is not a class or a property") + """ + instances = [] + for c in classes: + for i in findStatements(model, None, rdf.type, c): + if not isResource(getSubject(i)): + continue + inst = getSubject(i) + if inst not in instances and str(inst) != spec_url: + instances.append(inst) + for i in findStatements(model, None, rdf.type, None): + if ((not isResource(getSubject(i))) + or (getSubject(i) in classes) + or (getSubject(i) in instances) + or (getSubject(i) in properties)): + continue + full_uri = str(getSubject(i)) + if (full_uri.startswith(spec_ns_str)): + instances.append(getSubject(i)) + return instances + +def load_tags(path, docdir): + "Build a (symbol => URI) map from a Doxygen tag file." + + if not path or not docdir: + return {} + + def getChildText(elt, tagname): + "Return the content of the first child node with a certain tag name." + for e in elt.childNodes: + if e.nodeType == xml.dom.Node.ELEMENT_NODE and e.tagName == tagname: + return e.firstChild.nodeValue + return '' + + def linkTo(filename, anchor, sym): + if anchor: + return '<span><a href="%s/%s#%s">%s</a></span>' % (docdir, filename, anchor, sym) + else: + return '<span><a href="%s/%s">%s</a></span>' % (docdir, filename, sym) + + tagdoc = xml.dom.minidom.parse(path) + root = tagdoc.documentElement + linkmap = {} + for cn in root.childNodes: + if (cn.nodeType == xml.dom.Node.ELEMENT_NODE + and cn.tagName == 'compound' + and cn.getAttribute('kind') != 'page'): + + name = getChildText(cn, 'name') + filename = getChildText(cn, 'filename') + anchor = getChildText(cn, 'anchor') + if not filename.endswith('.html'): + filename += '.html' + + if cn.getAttribute('kind') != 'group': + linkmap[name] = linkTo(filename, anchor, name) + + prefix = '' + if cn.getAttribute('kind') == 'struct': + prefix = name + '::' + + members = cn.getElementsByTagName('member') + for m in members: + mname = prefix + getChildText(m, 'name') + mafile = getChildText(m, 'anchorfile') + manchor = getChildText(m, 'anchor') + linkmap[mname] = linkTo(mafile, manchor, mname) + + return linkmap + + +def writeIndex(model, specloc, index_path, root_path, root_uri): + # Get extension URI + ext_node = model.value(None, rdf.type, lv2.Specification) + if not ext_node: + ext_node = model.value(None, rdf.type, owl.Ontology) + if not ext_node: + print('no extension found in %s' % bundle) + sys.exit(1) + + ext = str(ext_node) + + # Get version + minor = 0 + micro = 0 + try: + minor = int(model.value(ext_node, lv2.minorVersion, None)) + micro = int(model.value(ext_node, lv2.microVersion, None)) + except: + e = sys.exc_info()[1] + print('warning: %s: failed to find version for %s' % (bundle, ext)) + + # Get date + date = None + for r in model.triples([ext_node, doap.release, None]): + revision = model.value(r[2], doap.revision, None) + if str(revision) == ('%d.%d' % (minor, micro)): + date = model.value(r[2], doap.created, None) + break + + # Verify that this date is the latest + for r in model.triples([ext_node, doap.release, None]): + this_date = model.value(r[2], doap.created, None) + if this_date > date: + print('warning: %s revision %d.%d (%s) is not the latest release' % ( + ext_node, minor, micro, date)) + break + + # Get name and short description + name = model.value(ext_node, doap.name, None) + shortdesc = model.value(ext_node, doap.shortdesc, None) + + # Chop 'LV2' prefix from name for cleaner index + if name.startswith('LV2 '): + name = name[4:] + + # Find relative link target + if root_uri and ext_node.startswith(root_uri): + target = ext_node[len(root_uri):] + else: + target = os.path.relpath(ext_node, root_path) + + # Specification (comment is to act as a sort key) + if not options.online_docs: + target += '/' + os.path.basename(target) + '.html' + row = '<tr><!-- %s --><td><a rel="rdfs:seeAlso" href="%s">%s</a></td>' % ( + b, target, name) + + # API + row += '<td><a rel="rdfs:seeAlso" href="../doc/html/group__%s.html">%s</a></td>' % ( + b, b) + + # Description + if shortdesc: + row += '<td>' + str(shortdesc) + '</td>' + else: + row += '<td></td>' + + # Version + version_str = '%s.%s' % (minor, micro) + if minor == 0 or (micro % 2 != 0): + row += '<td><span style="color: red">' + version_str + '</span></td>' + else: + row += '<td>' + version_str + '</td>' + + # Status + deprecated = model.value(ext_node, owl.deprecated, None) + if minor == 0: + row += '<td><span class="error">Experimental</span></td>' + elif deprecated and str(deprecated[2]) != "false": + row += '<td><span class="warning">Deprecated</span></td>' + elif micro % 2 == 0: + row += '<td><span class="success">Stable</span></td>' + + row += '</tr>' + + # index = open(os.path.join(out, 'index_rows', b), 'w') + index = open(index_path, 'w') + index.write(row) + index.close() + + +def specgen(specloc, indir, style_uri, docdir, tags, opts, instances=False, root_link=None, index_path=None, root_path=None, root_uri=None): + """The meat and potatoes: Everything starts here.""" + + global spec_bundle + global spec_url + global spec_ns_str + global spec_ns + global spec_pre + global ns_list + global specgendir + global linkmap + + spec_bundle = "file://%s/" % os.path.abspath(os.path.dirname(specloc)) + specgendir = os.path.abspath(indir) + + # Template + temploc = os.path.join(indir, "template.html") + template = None + f = open(temploc, "r") + template = f.read() + f.close() + + # Load code documentation link map from tags file + linkmap = load_tags(tags, docdir) + + m = rdflib.ConjunctiveGraph() + manifest_path = os.path.join(os.path.dirname(specloc), 'manifest.ttl') + if os.path.exists(manifest_path): + m.parse(manifest_path, format='n3') + m.parse(specloc, format='n3') + + bundle_path = os.path.split(specloc[specloc.find(':') + 1:])[0] + abs_bundle_path = os.path.abspath(bundle_path) + spec_url = getOntologyNS(m) + spec = rdflib.URIRef(spec_url) + + # Load all seeAlso files recursively + seeAlso = set() + done = False + while not done: + done = True + for uri in specProperties(m, spec, rdfs.seeAlso): + if uri[:7] == 'file://': + path = uri[7:] + if (path != os.path.abspath(specloc) and + path.endswith('ttl') and + path not in seeAlso): + seeAlso.add(path) + m.parse(path, format='n3') + done = False + + spec_ns_str = spec_url + if (spec_ns_str[-1] != "/" and spec_ns_str[-1] != "#"): + spec_ns_str += "#" + + spec_ns = rdflib.Namespace(spec_ns_str) + + namespaces = getNamespaces(m) + keys = sorted(namespaces.keys()) + prefixes_html = "<span>" + for i in keys: + uri = namespaces[i] + if uri.startswith('file:'): + continue; + ns_list[str(uri)] = i + if (str(uri) == spec_url + '#' or + str(uri) == spec_url + '/' or + str(uri) == spec_url): + spec_pre = i + prefixes_html += '<a href="%s">%s</a> ' % (uri, i) + prefixes_html += "</span>" + + if spec_pre is None: + print('No namespace prefix for %s defined' % specloc) + sys.exit(1) + + ns_list[spec_ns_str] = spec_pre + + classlist, proplist = specInformation(m, spec_ns_str) + classlist = sorted(classlist) + proplist = sorted(proplist) + + instalist = None + if instances: + instalist = sorted(getInstances(m, classlist, proplist), + key=lambda x: getShortName(x).lower()) + + filelist = [] + see_also_files = specProperties(m, spec, rdfs.seeAlso) + see_also_files.sort() + for f in see_also_files: + uri = str(f) + if uri[:7] == 'file://': + uri = uri[7:] + if uri[:len(abs_bundle_path)] == abs_bundle_path: + uri = uri[len(abs_bundle_path) + 1:] + else: + continue # Skip seeAlso file outside bundle + + filelist += [uri] + + azlist = buildIndex(m, classlist, proplist, instalist, filelist) + + # Generate Term HTML + termlist = docTerms('Property', proplist, m, classlist, proplist, instalist) + termlist = docTerms('Class', classlist, m, classlist, proplist, instalist) + termlist + if instances: + termlist += docTerms('Instance', instalist, m, classlist, proplist, instalist) + + name = specProperty(m, spec, doap.name) + title = name + if root_link: + name = '<a href="%s">%s</a>' % (root_link, name) + + template = template.replace('@TITLE@', title) + template = template.replace('@NAME@', name) + template = template.replace('@SHORT_DESC@', specProperty(m, spec, doap.shortdesc)) + template = template.replace('@URI@', spec) + template = template.replace('@PREFIX@', spec_pre) + if spec_pre == 'lv2': + template = template.replace('@XMLNS@', '') + else: + template = template.replace('@XMLNS@', ' xmlns:%s="%s"' % (spec_pre, spec_ns_str)) + + filename = os.path.basename(specloc) + basename = filename[0:filename.rfind('.')] + + template = template.replace('@STYLE_URI@', style_uri) + template = template.replace('@PREFIXES@', str(prefixes_html)) + template = template.replace('@BASE@', spec_ns_str) + template = template.replace('@AUTHORS@', specAuthors(m, spec)) + template = template.replace('@INDEX@', azlist) + template = template.replace('@REFERENCE@', termlist) + template = template.replace('@FILENAME@', filename) + template = template.replace('@HEADER@', basename + '.h') + template = template.replace('@HISTORY@', specHistory(m, spec)) + + mail_row = '' + if 'list_email' in opts: + mail_row = '<tr><th>Discuss</th><td><a href="mailto:%s">%s</a>' % ( + opts['list_email'], opts['list_email']) + if 'list_page' in opts: + mail_row += ' <a href="%s">(subscribe)</a>' % opts['list_page'] + mail_row += '</td></tr>' + template = template.replace('@MAIL@', mail_row) + + version = specVersion(m, spec) # (minor, micro, date) + date_string = version[2] + if date_string == "": + date_string = "Undated" + + version_string = "%s.%s" % (version[0], version[1]) + experimental = (version[0] == 0 or version[1] % 2 == 1) + if experimental: + version_string += ' <span class="warning">EXPERIMENTAL</span>' + + if isDeprecated(m, rdflib.URIRef(spec_url)): + version_string += ' <span class="warning">DEPRECATED</span>' + + template = template.replace('@VERSION@', version_string) + + content_links = '' + if docdir is not None: + content_links = '<li><a href="%s">API</a></li>' % os.path.join(docdir, 'group__%s.html' % basename) + + template = template.replace('@CONTENT_LINKS@', content_links) + + comment = getComment(m, rdflib.URIRef(spec_url), classlist, proplist, instalist) + if comment != '': + template = template.replace('@COMMENT@', comment) + else: + template = template.replace('@COMMENT@', '') + + now = int(os.environ.get('SOURCE_DATE_EPOCH', time.time())) + build_date = datetime.datetime.utcfromtimestamp(now) + template = template.replace('@DATE@', build_date.strftime('%F')) + template = template.replace('@TIME@', build_date.strftime('%F %H:%M UTC')) + + # Write index row + if index_path is not None: + writeIndex(m, specloc, index_path, root_path, root_uri) + + return template + + +def save(path, text): + try: + f = open(path, "w") + f.write(text) + f.flush() + f.close() + except Exception: + e = sys.exc_info()[1] + print('Error writing to file "' + path + '": ' + str(e)) + + +def getNamespaces(m): + """Return a prefix:URI dictionary of all namespaces seen during parsing""" + nspaces = {} + for prefix, uri in m.namespaces(): + if not re.match('default[0-9]*', prefix) and not prefix == 'xml': + # Skip silly default namespaces added by rdflib + nspaces[prefix] = uri + return nspaces + + +def getOntologyNS(m): + ns = None + s = findOne(m, None, rdf.type, lv2.Specification) + if not s: + s = findOne(m, None, rdf.type, owl.Ontology) + if s: + if not isBlank(getSubject(s)): + ns = str(getSubject(s)) + + if (ns == None): + sys.exit("Impossible to get ontology's namespace") + else: + return ns + + +def usage(): + script = os.path.basename(sys.argv[0]) + return "Usage: %s ONTOLOGY_TTL OUTPUT_HTML [OPTION]..." % script + +if __name__ == "__main__": + """Ontology specification generator tool""" + + indir = os.path.abspath(os.path.dirname(sys.argv[0])) + if not os.path.exists(os.path.join(indir, 'template.html')): + indir = os.path.join(os.path.dirname(indir), 'share', 'lv2specgen') + + opt = optparse.OptionParser(usage=usage(), + description='Write HTML documentation for an RDF ontology.') + opt.add_option('--list-email', type='string', dest='list_email', + help='Mailing list email address') + opt.add_option('--list-page', type='string', dest='list_page', + help='Mailing list info page address') + opt.add_option('--template-dir', type='string', dest='template_dir', default=indir, + help='Template directory') + opt.add_option('--style-uri', type='string', dest='style_uri', default='style.css', + help='Stylesheet URI') + opt.add_option('--docdir', type='string', dest='docdir', default=None, + help='Doxygen output directory') + opt.add_option('--index', type='string', dest='index_path', default=None, + help='Index row output file') + opt.add_option('--tags', type='string', dest='tags', default=None, + help='Doxygen tags file') + opt.add_option('-r', '--root-path', type='string', dest='root_path', default='', + help='Root path') + opt.add_option('-R', '--root-uri', type='string', dest='root_uri', default='', + help='Root URI') + opt.add_option('-p', '--prefix', type='string', dest='prefix', + help='Specification Turtle prefix') + opt.add_option('-i', '--instances', action='store_true', dest='instances', + help='Document instances') + opt.add_option('--copy-style', action='store_true', dest='copy_style', + help='Copy style from template directory to output directory') + opt.add_option('--online', action='store_true', dest='online_docs', + help='Generate online documentation') + + (options, args) = opt.parse_args() + opts = vars(options) + + if len(args) < 2: + opt.print_help() + sys.exit(-1) + + spec_pre = options.prefix + ontology = "file:" + str(args[0]) + output = args[1] + index_path = options.index_path + docdir = options.docdir + tags = options.tags + + out = '.' + spec = args[0] + path = os.path.dirname(spec) + outdir = os.path.abspath(os.path.join(out, path)) + + bundle = str(outdir) + b = os.path.basename(outdir) + + if not os.access(os.path.abspath(spec), os.R_OK): + print('warning: extension %s has no %s.ttl file' % (b, b)) + sys.exit(1) + + # Root link + root_path = opts['root_path'] + root_uri = opts['root_uri'] + root_link = os.path.relpath(root_path, path) if root_path else '.' + if not options.online_docs: + root_link = os.path.join(root_link, 'index.html') + + # Generate spec documentation + specdoc = specgen( + spec, + indir, + opts['style_uri'], + docdir, + tags, + opts, + instances=True, + root_link=root_link, + index_path=index_path, + root_path=root_path, + root_uri=root_uri) + + # Save to HTML output file + save(output, specdoc) + + if opts['copy_style']: + import shutil + shutil.copyfile(os.path.join(indir, 'style.css'), + os.path.join(os.path.dirname(output), 'style.css')) diff --git a/lv2specgen/style.css b/lv2specgen/style.css new file mode 120000 index 0000000..f320096 --- /dev/null +++ b/lv2specgen/style.css @@ -0,0 +1 @@ +../doc/style.css
\ No newline at end of file diff --git a/lv2specgen/template.html b/lv2specgen/template.html new file mode 100644 index 0000000..5056aef --- /dev/null +++ b/lv2specgen/template.html @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"> +<html about="@URI@" + xmlns="http://www.w3.org/1999/xhtml" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:dct="http://purl.org/dc/terms/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" + xmlns:lv2="http://lv2plug.in/ns/lv2core#" + @XMLNS@ + xml:lang="en"> + <head> + <title>@TITLE@</title> + <meta http-equiv="content-type" content="text/xhtml+xml; charset=utf-8" /> + <meta name="generator" content="lv2specgen" /> + <link href="@STYLE_URI@" rel="stylesheet" type="text/css" /> + </head> + <body> + + <!-- HEADER --> + <div id="topbar"> + <div id="header"> + <div id="titlebox"> + <h1 id="title">@NAME@</h1> + <div id="subtitle"><a href="@URI@">@URI@</a></div> + <div id="shortdesc">@SHORT_DESC@</div> + </div> + <table id="meta"> + <!--<tr><th>URI</th><td><a href="@URI@">@URI@</a></td></tr> + <tr><th>Version</th><td>@REVISION@</td></tr>--> + <!--<tr><th>Prefixes</th><td>@PREFIXES@</td></tr>--> + <tr><th>Version</th><td>@VERSION@</td></tr> + <tr><th>Date</th><td>@DATE@</td></tr> + @MAIL@ + @AUTHORS@ + </table> + </div> + <ul id="contents"> + <!-- <li><a href="#sec-description">Description</a></li> --> + <li><a href="#sec-index">Index</a></li> + <li><a href="#sec-reference">Reference</a></li> + <li><a href="#sec-history">History</a></li> + @CONTENT_LINKS@ + </ul> + </div> + + <!-- DESCRIPTION --> + <!--<h2 class="sec" id="sec-description">Description</h2>--> + <div class="content">@COMMENT@</div> + + <!-- INDEX --> + <h2 class="sec" id="sec-index">Index</h2> + <div class="content" id="index"> + @INDEX@ + </div> + + <!-- DOCUMENTATION --> + <h2 class="sec" id="sec-reference">Reference</h2> + <div class="content"> + @REFERENCE@ + </div> + + <!-- HISTORY --> + <h2 class="sec" id="sec-history">History</h2> + <div class="content"> + @HISTORY@ + </div> + + <!-- FOOTER --> + <div id="footer"> + <div> + This document is available under the + <a about="" rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/"> + Creative Commons Attribution-ShareAlike License + </a> + </div> + <div> + Valid + <a about="" rel="dct:conformsTo" resource="http://www.w3.org/TR/rdfa-syntax" + href="http://validator.w3.org/check?uri=referer"> + XHTML+RDFa + </a> + and + <a about="" rel="dct:conformsTo" resource="http://www.w3.org/TR/CSS2" + href="http://jigsaw.w3.org/css-validator/check/referer"> + CSS + </a> + generated from @FILENAME@ by <a href="http://drobilla.net/software/lv2specgen">lv2specgen</a> + </div> + </div> + + </body> +</html> |