diff options
author | David Robillard <d@drobilla.net> | 2019-03-24 19:33:11 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2019-03-24 21:23:03 +0100 |
commit | 8c5541cbe44d10769cc4d6c72c9cb142ca7a4c20 (patch) | |
tree | 199d65ae4a16027856f4b15a98fc5d2dbdd40caa /lv2specgen | |
parent | c5bb8d806d72ec9340188c558fab8d972db7891f (diff) | |
download | lv2-8c5541cbe44d10769cc4d6c72c9cb142ca7a4c20.tar.xz |
Add validation for complete specification page
Diffstat (limited to 'lv2specgen')
-rw-r--r-- | lv2specgen/DTD/xhtml-datatypes-1.mod.1 | 103 | ||||
-rw-r--r-- | lv2specgen/DTD/xhtml-metaAttributes-1.mod | 154 | ||||
-rw-r--r-- | lv2specgen/DTD/xhtml-rdfa-1.dtd | 472 | ||||
-rw-r--r-- | lv2specgen/DTD/xhtml-rdfa-model-1.mod | 249 | ||||
-rwxr-xr-x | lv2specgen/lv2specgen.py | 13 |
5 files changed, 991 insertions, 0 deletions
diff --git a/lv2specgen/DTD/xhtml-datatypes-1.mod.1 b/lv2specgen/DTD/xhtml-datatypes-1.mod.1 new file mode 100644 index 0000000..dde43e8 --- /dev/null +++ b/lv2specgen/DTD/xhtml-datatypes-1.mod.1 @@ -0,0 +1,103 @@ +<!-- ...................................................................... --> +<!-- 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" > + +<!-- Placeholder Compact URI-related types --> +<!ENTITY % CURIE.datatype "CDATA" > +<!ENTITY % CURIEs.datatype "CDATA" > +<!ENTITY % SafeCURIE.datatype "CDATA" > +<!ENTITY % SafeCURIEs.datatype "CDATA" > +<!ENTITY % URIorSafeCURIE.datatype "CDATA" > +<!ENTITY % URIorSafeCURIEs.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 comma separated list of language code ranges --> +<!ENTITY % LanguageCodes.datatype "CDATA" > + +<!-- a qualified name , as per [XMLNS] or its successor --> +<!ENTITY % QName.datatype "CDATA" > +<!ENTITY % QNames.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" > + +<!-- a relative URI reference consisting of an initial '#' and a fragment ID --> +<!ENTITY % URIREF.datatype "CDATA" > + +<!-- end of xhtml-datatypes-1.mod --> diff --git a/lv2specgen/DTD/xhtml-metaAttributes-1.mod b/lv2specgen/DTD/xhtml-metaAttributes-1.mod new file mode 100644 index 0000000..b434e39 --- /dev/null +++ b/lv2specgen/DTD/xhtml-metaAttributes-1.mod @@ -0,0 +1,154 @@ +<!-- ...................................................................... --> +<!-- XHTML MetaAttributes Module ......................................... --> +<!-- file: xhtml-metaAttributes-1.mod + + This is XHTML-RDFa, modules to annotate XHTML family documents. + Copyright 2007-2008 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-metaAttributes-1.mod,v 1.6 2008/08/01 20:01:00 smccarro Exp $ + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML MetaAttributes 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-metaAttributes-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!ENTITY % XHTML.global.attrs.prefixed "IGNORE" > + +<!-- Placeholder Compact URI-related types --> +<!ENTITY % CURIE.datatype "CDATA" > +<!ENTITY % CURIEs.datatype "CDATA" > +<!ENTITY % SafeCURIE.datatype "CDATA" > +<!ENTITY % SafeCURIEs.datatype "CDATA" > +<!ENTITY % URIorSafeCURIE.datatype "CDATA" > +<!ENTITY % URIorSafeCURIEs.datatype "CDATA" > + +<!-- Common Attributes + + This module declares a collection of meta-information related + attributes. + + %NS.decl.attrib; is declared in the XHTML Qname module. + + This file also includes declarations of "global" versions of the + attributes. The global versions of the attributes are for use on + elements in other namespaces. +--> + +<!ENTITY % about.attrib + "about %URIorSafeCURIE.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.about.attrib + "%XHTML.prefix;:about %URIorSafeCURIE.datatype; #IMPLIED" +> +]]> + +<!ENTITY % typeof.attrib + "typeof %CURIEs.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.typeof.attrib + "%XHTML.prefix;:typeof %CURIEs.datatype; #IMPLIED" +> +]]> + +<!ENTITY % property.attrib + "property %CURIEs.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.property.attrib + "%XHTML.prefix;:property %CURIEs.datatype; #IMPLIED" +> +]]> + +<!ENTITY % resource.attrib + "resource %URIorSafeCURIE.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.resource.attrib + "%XHTML.prefix;:resource %URIorSafeCURIE.datatype; #IMPLIED" +> +]]> + +<!ENTITY % content.attrib + "content CDATA #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.content.attrib + "%XHTML.prefix;:content CDATA #IMPLIED" +> +]]> + +<!ENTITY % datatype.attrib + "datatype %CURIE.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.datatype.attrib + "%XHTML.prefix;:datatype %CURIE.datatype; #IMPLIED" +> +]]> + +<!ENTITY % rel.attrib + "rel %CURIEs.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.rel.attrib + "%XHTML.prefix;:rel %CURIEs.datatype; #IMPLIED" +> +]]> + +<!ENTITY % rev.attrib + "rev %CURIEs.datatype; #IMPLIED" +> + +<![%XHTML.global.attrs.prefixed;[ +<!ENTITY % XHTML.global.rev.attrib + "%XHTML.prefix;:rev %CURIEs.datatype; #IMPLIED" +> +]]> + +<!ENTITY % Metainformation.extra.attrib "" > + +<!ENTITY % Metainformation.attrib + "%about.attrib; + %content.attrib; + %datatype.attrib; + %typeof.attrib; + %property.attrib; + %rel.attrib; + %resource.attrib; + %rev.attrib; + %Metainformation.extra.attrib;" +> + +<!ENTITY % XHTML.global.metainformation.extra.attrib "" > + +<![%XHTML.global.attrs.prefixed;[ + +<!ENTITY % XHTML.global.metainformation.attrib + "%XHTML.global.about.attrib; + %XHTML.global.content.attrib; + %XHTML.global.datatype.attrib; + %XHTML.global.typeof.attrib; + %XHTML.global.property.attrib; + %XHTML.global.rel.attrib; + %XHTML.global.resource.attrib; + %XHTML.global.rev.attrib; + %XHTML.global.metainformation.extra.attrib;" +> +]]> + +<!ENTITY % XHTML.global.metainformation.attrib "" > + + +<!-- end of xhtml-metaAttributes-1.mod --> diff --git a/lv2specgen/DTD/xhtml-rdfa-1.dtd b/lv2specgen/DTD/xhtml-rdfa-1.dtd new file mode 100644 index 0000000..26ed117 --- /dev/null +++ b/lv2specgen/DTD/xhtml-rdfa-1.dtd @@ -0,0 +1,472 @@ +<!-- ....................................................................... --> +<!-- XHTML 1.1 + RDFa DTD ................................................. --> +<!-- file: xhtml-rdfa-1.dtd +--> + +<!-- XHTML 1.1 + RDFa DTD + + This is an example markup language combining XHTML 1.1 and the RDFa + modules. + + XHTML+RDFa + Copyright 1998-2008 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 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. + +--> +<!-- This is the driver file for version 1 of the XHTML + RDFa DTD. + + Please use this public identifier to identify it: + + "-//W3C//DTD XHTML+RDFa 1.0//EN" +--> +<!ENTITY % XHTML.version "XHTML+RDFa 1.0" > + +<!-- 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. + + Note that XHTML namespace elements are not prefixed by default, + but the XHTML namespace prefix is defined as "xhtml" so that + other markup languages can extend this one and use the XHTML + prefixed global attributes if required. + +--> +<!ENTITY % NS.prefixed "IGNORE" > +<!ENTITY % XHTML.prefix "xhtml" > + +<!-- Be sure to include prefixed global attributes - we don't need + them, but languages that extend XHTML 1.1 might. +--> +<!ENTITY % XHTML.global.attrs.prefixed "INCLUDE" > + +<!-- Reserved for use with the XLink namespace: +--> +<!ENTITY % XLINK.xmlns "" > +<!ENTITY % XLINK.xmlns.attrib "" > + +<!-- For example, if you are using XHTML 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+RDFa 1.0//EN" + "xhtml-rdfa-1.dtd"> + <html xmlns="http://www.w3.org/1999/xhtml" + xml:lang="en"> + ... + </html> + + Revisions: + (none) +--> + +<!-- reserved for future use with document profiles --> +<!ENTITY % XHTML.profile "" > + +<!-- ensure XHTML Notations are disabled --> +<!ENTITY % xhtml-notations.module "IGNORE" > + +<!-- Bidirectional Text features + This feature-test entity is used to declare elements + and attributes used for bidirectional text support. +--> +<!ENTITY % XHTML.bidi "INCLUDE" > + +<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> + +<!-- Pre-Framework Redeclaration placeholder .................... --> +<!-- this serves as a location to insert markup declarations + into the DTD prior to the framework declarations. +--> +<!ENTITY % xhtml-prefw-redecl.module "IGNORE" > +<!ENTITY % xhtml-prefw-redecl.mod "" > +<![%xhtml-prefw-redecl.module;[ +%xhtml-prefw-redecl.mod; +<!-- end of xhtml-prefw-redecl.module -->]]> + +<!-- we need the datatypes now --> +<!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;]]> + +<!-- bring in the RDFa attributes cause we need them in Common --> +<!ENTITY % xhtml-metaAttributes.module "INCLUDE" > +<![%xhtml-metaAttributes.module;[ +<!ENTITY % xhtml-metaAttributes.mod + PUBLIC "-//W3C//ENTITIES XHTML MetaAttributes 1.0//EN" + "xhtml-metaAttributes-1.mod" > +%xhtml-metaAttributes.mod;]]> + +<!ENTITY % xhtml-events.module "INCLUDE" > + +<!ENTITY % Common.extra.attrib + "href %URI.datatype; #IMPLIED + %Metainformation.attrib;" +> +<!-- adding the lang attribute into the I18N collection --> + +<!ENTITY % lang.attrib + "xml:lang %LanguageCode.datatype; #IMPLIED + lang %LanguageCode.datatype; #IMPLIED" +> + +<!-- Inline Style Module ........................................ --> +<!ENTITY % xhtml-inlstyle.module "INCLUDE" > +<![%xhtml-inlstyle.module;[ +<!ENTITY % xhtml-inlstyle.mod + PUBLIC "-//W3C//ELEMENTS XHTML Inline Style 1.0//EN" + "xhtml-inlstyle-1.mod" > +%xhtml-inlstyle.mod;]]> + +<!-- declare Document Model module instantiated in framework +--> +<!ENTITY % xhtml-model.mod + PUBLIC "-//W3C//ENTITIES XHTML+RDFa Document Model 1.0//EN" + "xhtml-rdfa-model-1.mod" > + +<!-- Modular Framework Module (required) ......................... --> +<!ENTITY % xhtml-framework.module "INCLUDE" > +<![%xhtml-framework.module;[ +<!ENTITY % xhtml-framework.mod + PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN" + "xhtml-framework-1.mod" > +%xhtml-framework.mod;]]> + +<!-- Post-Framework Redeclaration placeholder ................... --> +<!-- this serves as a location to insert markup declarations + into the DTD following the framework declarations. +--> +<!ENTITY % xhtml-postfw-redecl.module "IGNORE" > +<!ENTITY % xhtml-postfw-redecl.mod ""> +<![%xhtml-postfw-redecl.module;[ +%xhtml-postfw-redecl.mod; +<!-- end of xhtml-postfw-redecl.module -->]]> + + + +<!-- Text Module (Required) ..................................... --> +<!ENTITY % xhtml-text.module "INCLUDE" > +<![%xhtml-text.module;[ +<!ENTITY % xhtml-text.mod + PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN" + "xhtml-text-1.mod" > +%xhtml-text.mod;]]> + +<!-- Hypertext Module (required) ................................. --> +<!ENTITY % a.attlist "IGNORE" > +<!ENTITY % xhtml-hypertext.module "INCLUDE" > +<![%xhtml-hypertext.module;[ +<!ENTITY % xhtml-hypertext.mod + PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN" + "xhtml-hypertext-1.mod" > +%xhtml-hypertext.mod;]]> +<!ATTLIST %a.qname; + %Common.attrib; + charset %Charset.datatype; #IMPLIED + type %ContentType.datatype; #IMPLIED + hreflang %LanguageCode.datatype; #IMPLIED + accesskey %Character.datatype; #IMPLIED + tabindex %Number.datatype; #IMPLIED +> + +<!-- Lists Module (required) .................................... --> +<!ENTITY % xhtml-list.module "INCLUDE" > +<![%xhtml-list.module;[ +<!ENTITY % xhtml-list.mod + PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN" + "xhtml-list-1.mod" > +%xhtml-list.mod;]]> + +<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: --> + +<!-- Edit Module ................................................ --> +<!ENTITY % xhtml-edit.module "INCLUDE" > +<![%xhtml-edit.module;[ +<!ENTITY % xhtml-edit.mod + PUBLIC "-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN" + "xhtml-edit-1.mod" > +%xhtml-edit.mod;]]> + +<!-- BIDI Override Module ....................................... --> +<!ENTITY % xhtml-bdo.module "%XHTML.bidi;" > +<![%xhtml-bdo.module;[ +<!ENTITY % xhtml-bdo.mod + PUBLIC "-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN" + "xhtml-bdo-1.mod" > +%xhtml-bdo.mod;]]> + +<!-- Ruby Module ................................................ --> +<!ENTITY % Ruby.common.attlists "INCLUDE" > +<!ENTITY % Ruby.common.attrib "%Common.attrib;" > +<!ENTITY % xhtml-ruby.module "INCLUDE" > +<![%xhtml-ruby.module;[ +<!ENTITY % xhtml-ruby.mod + PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN" + "http://www.w3.org/TR/ruby/xhtml-ruby-1.mod" > +%xhtml-ruby.mod;]]> + +<!-- Presentation Module ........................................ --> +<!ENTITY % xhtml-pres.module "INCLUDE" > +<![%xhtml-pres.module;[ +<!ENTITY % xhtml-pres.mod + PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN" + "xhtml-pres-1.mod" > +%xhtml-pres.mod;]]> + +<!ENTITY % link.attlist "IGNORE" > +<!-- 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;]]> + +<!ATTLIST %link.qname; + %Common.attrib; + charset %Charset.datatype; #IMPLIED + hreflang %LanguageCode.datatype; #IMPLIED + type %ContentType.datatype; #IMPLIED + media %MediaDesc.datatype; #IMPLIED +> + +<!-- Document Metainformation Module ............................ --> +<!ENTITY % meta.attlist "IGNORE" > +<!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;]]> +<!ATTLIST %meta.qname; + %Common.attrib; + http-equiv NMTOKEN #IMPLIED + name NMTOKEN #IMPLIED + scheme CDATA #IMPLIED +> + +<!-- 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;]]> + +<!-- Scripting Module ........................................... --> +<!ENTITY % script.attlist "IGNORE" > +<!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;]]> + +<!ATTLIST %script.qname; + %XHTML.xmlns.attrib; + %id.attrib; + %Metainformation.attrib; + href %URI.datatype; #IMPLIED + xml:space ( preserve ) #FIXED 'preserve' + charset %Charset.datatype; #IMPLIED + type %ContentType.datatype; #REQUIRED + src %URI.datatype; #IMPLIED + defer ( defer ) #IMPLIED +> + +<!-- Style Sheets Module ......................................... --> +<!ENTITY % style.attlist "IGNORE" > +<!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;]]> +<!ATTLIST %style.qname; + %XHTML.xmlns.attrib; + %id.attrib; + %title.attrib; + %I18n.attrib; + %Metainformation.attrib; + href %URI.datatype; #IMPLIED + xml:space ( preserve ) #FIXED 'preserve' + type %ContentType.datatype; #REQUIRED + media %MediaDesc.datatype; #IMPLIED +> + +<!-- 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;]]> + +<!-- Client-side Image Map Module ............................... --> +<!ENTITY % area.attlist "IGNORE" > + +<!ENTITY % xhtml-csismap.module "INCLUDE" > +<![%xhtml-csismap.module;[ +<!ENTITY % xhtml-csismap.mod + PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN" + "xhtml-csismap-1.mod" > +%xhtml-csismap.mod;]]> + +<!ATTLIST %area.qname; + %Common.attrib; + shape %Shape.datatype; 'rect' + coords %Coords.datatype; #IMPLIED + nohref ( nohref ) #IMPLIED + alt %Text.datatype; #REQUIRED + tabindex %Number.datatype; #IMPLIED + accesskey %Character.datatype; #IMPLIED +> + +<!-- Server-side Image Map Module ............................... --> +<!ENTITY % xhtml-ssismap.module "INCLUDE" > +<![%xhtml-ssismap.module;[ +<!ENTITY % xhtml-ssismap.mod + PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN" + "xhtml-ssismap-1.mod" > +%xhtml-ssismap.mod;]]> + +<!-- Param Element Module ....................................... --> +<!ENTITY % param.attlist "IGNORE" > +<!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;]]> + +<!ATTLIST %param.qname; + %XHTML.xmlns.attrib; + %id.attrib; + %Metainformation.attrib; + href %URI.datatype; #IMPLIED + name CDATA #REQUIRED + value CDATA #IMPLIED + valuetype ( data | ref | object ) 'data' + type %ContentType.datatype; #IMPLIED +> +<!-- 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;]]> + +<!-- Tables Module ............................................... --> +<!ENTITY % xhtml-table.module "INCLUDE" > +<![%xhtml-table.module;[ +<!ENTITY % xhtml-table.mod + PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN" + "xhtml-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;]]> + +<!-- 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;]]> + +<!-- Legacy Markup ............................................... --> +<!ENTITY % xhtml-legacy.module "IGNORE" > +<![%xhtml-legacy.module;[ +<!ENTITY % xhtml-legacy.mod + PUBLIC "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN" + "xhtml-legacy-1.mod" > +%xhtml-legacy.mod;]]> + +<!-- Document Structure Module (required) ....................... --> +<!ENTITY % html.attlist "IGNORE" > +<!ENTITY % head.attlist "IGNORE" > +<!ENTITY % title.attlist "IGNORE" > +<!ENTITY % xhtml-struct.module "INCLUDE" > +<![%xhtml-struct.module;[ +<!ENTITY % xhtml-struct.mod + PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN" + "xhtml-struct-1.mod" > +%xhtml-struct.mod;]]> +<!ENTITY % profile.attrib + "profile %URI.datatype; '%XHTML.profile;'" +> +<!ENTITY % XHTML.version.attrib + "version %FPI.datatype; #FIXED '%XHTML.version;'" +> +<!ATTLIST %html.qname; + %Common.attrib; + %XSI.schemaLocation.attrib; + %XHTML.version.attrib; +> +<!ATTLIST %head.qname; + %Common.attrib; + %profile.attrib; +> +<!ATTLIST %title.qname; + %Common.attrib; +> + +<!-- end of XHTML-RDFa DTD ................................................ --> +<!-- ....................................................................... --> + +<!-- Add xmlns attributes to validate lv2specgen output --> +<!-- This is a pretty dirty hack, but avoids needing to write a bunch of code to + mangle DTDs to appease validation --> + +<!ATTLIST html xmlns:dc CDATA #IMPLIED> +<!ATTLIST html xmlns:dct CDATA #IMPLIED> +<!ATTLIST html xmlns:rdf CDATA #IMPLIED> +<!ATTLIST html xmlns:rdfs CDATA #IMPLIED> + +<!ATTLIST html xmlns:atom CDATA #IMPLIED> +<!ATTLIST html xmlns:bufsz CDATA #IMPLIED> +<!ATTLIST html xmlns:da CDATA #IMPLIED> +<!ATTLIST html xmlns:dman CDATA #IMPLIED> +<!ATTLIST html xmlns:ev CDATA #IMPLIED> +<!ATTLIST html xmlns:ia CDATA #IMPLIED> +<!ATTLIST html xmlns:log CDATA #IMPLIED> +<!ATTLIST html xmlns:lv2 CDATA #IMPLIED> +<!ATTLIST html xmlns:midi CDATA #IMPLIED> +<!ATTLIST html xmlns:morph CDATA #IMPLIED> +<!ATTLIST html xmlns:opts CDATA #IMPLIED> +<!ATTLIST html xmlns:param CDATA #IMPLIED> +<!ATTLIST html xmlns:patch CDATA #IMPLIED> +<!ATTLIST html xmlns:pg CDATA #IMPLIED> +<!ATTLIST html xmlns:pprops CDATA #IMPLIED> +<!ATTLIST html xmlns:pset CDATA #IMPLIED> +<!ATTLIST html xmlns:rsz CDATA #IMPLIED> +<!ATTLIST html xmlns:state CDATA #IMPLIED> +<!ATTLIST html xmlns:time CDATA #IMPLIED> +<!ATTLIST html xmlns:ui CDATA #IMPLIED> +<!ATTLIST html xmlns:umap CDATA #IMPLIED> +<!ATTLIST html xmlns:units CDATA #IMPLIED> +<!ATTLIST html xmlns:urid CDATA #IMPLIED> +<!ATTLIST html xmlns:work CDATA #IMPLIED> diff --git a/lv2specgen/DTD/xhtml-rdfa-model-1.mod b/lv2specgen/DTD/xhtml-rdfa-model-1.mod new file mode 100644 index 0000000..ad010ee --- /dev/null +++ b/lv2specgen/DTD/xhtml-rdfa-model-1.mod @@ -0,0 +1,249 @@ +<!-- ....................................................................... --> +<!-- XHTML+RDFa Document Model Module ..................................... --> +<!-- file: xhtml-rdfa-model-1.mod + + This is XHTML+RDFa. + Copyright 1998-2008 W3C (MIT, ERCIM, Keio), All Rights Reserved. + Revision: $Id: xhtml-rdfa-model-1.mod,v 1.4 2009/06/26 14:05:13 smccarro Exp $ SMI + + This DTD module is identified by the PUBLIC and SYSTEM identifiers: + + PUBLIC "-//W3C//ENTITIES XHTML+RDFa Document Model 1.0//EN" + SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-model-1.mod" + + Revisions: + (none) + ....................................................................... --> + +<!-- XHTML+RDFa Document Model + + This module describes the groupings of elements that make up + common content models for XHTML elements. + + XHTML has three basic content models: + + %Inline.mix; character-level elements + %Block.mix; block-like elements, eg., paragraphs and lists + %Flow.mix; any block or inline elements + + Any parameter entities declared in this module may be used + to create element content models, but the above three are + considered 'global' (insofar as that term applies here). + + The reserved word '#PCDATA' (indicating a text string) is now + included explicitly with each element declaration that is + declared as mixed content, as XML requires that this token + occur first in a content model specification. +--> +<!-- Extending the Model + + While in some cases this module may need to be rewritten to + accommodate changes to the document model, minor extensions + may be accomplished by redeclaring any of the three *.extra; + parameter entities to contain extension element types as follows: + + %Misc.extra; whose parent may be any block or + inline element. + + %Inline.extra; whose parent may be any inline element. + + %Block.extra; whose parent may be any block element. + + If used, these parameter entities must be an OR-separated + list beginning with an OR separator ("|"), eg., "| a | b | c" + + All block and inline *.class parameter entities not part + of the *struct.class classes begin with "| " to allow for + exclusion from mixes. +--> + +<!-- .............. Optional Elements in head .................. --> + +<!ENTITY % HeadOpts.mix + "( %script.qname; | %style.qname; | %meta.qname; + | %link.qname; | %object.qname; )*" +> + +<!-- ................. Miscellaneous Elements .................. --> + +<!-- ins and del are used to denote editing changes +--> +<!ENTITY % Edit.class "| %ins.qname; | %del.qname;" > + +<!-- script and noscript are used to contain scripts + and alternative content +--> +<!ENTITY % Script.class "| %script.qname; | %noscript.qname;" > + +<!ENTITY % Misc.extra "" > + +<!-- These elements are neither block nor inline, and can + essentially be used anywhere in the document body. +--> +<!ENTITY % Misc.class + "%Edit.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 "| %bdo.qname;" > + +<!ENTITY % Anchor.class "| %a.qname;" > + +<!ENTITY % InlSpecial.class + "| %img.qname; | %map.qname; + | %object.qname;" > + +<!ENTITY % InlForm.class + "| %input.qname; | %select.qname; | %textarea.qname; + | %label.qname; | %button.qname;" > + +<!ENTITY % Inline.extra "" > + +<!ENTITY % Ruby.class "| %ruby.qname;" > + +<!-- %Inline.class; includes all inline elements, + used as a component in mixes +--> +<!ENTITY % Inline.class + "%InlStruct.class; + %InlPhras.class; + %InlPres.class; + %I18n.class; + %Anchor.class; + %InlSpecial.class; + %InlForm.class; + %Ruby.class; + %Inline.extra;" +> + +<!-- %InlNoRuby.class; includes all inline elements + except ruby, used as a component in mixes +--> +<!ENTITY % InlNoRuby.class + "%InlStruct.class; + %InlPhras.class; + %InlPres.class; + %I18n.class; + %Anchor.class; + %InlSpecial.class; + %InlForm.class; + %Inline.extra;" +> + +<!-- %NoRuby.content; includes all inlines except ruby +--> +<!ENTITY % NoRuby.content + "( #PCDATA + | %InlNoRuby.class; + %Misc.class; )*" +> + +<!-- %InlNoAnchor.class; includes all non-anchor inlines, + used as a component in mixes +--> +<!ENTITY % InlNoAnchor.class + "%InlStruct.class; + %InlPhras.class; + %InlPres.class; + %I18n.class; + %InlSpecial.class; + %InlForm.class; + %Ruby.class; + %Inline.extra;" +> + +<!-- %InlNoAnchor.mix; includes all non-anchor inlines +--> +<!ENTITY % InlNoAnchor.mix + "%InlNoAnchor.class; + %Misc.class;" +> + +<!-- %Inline.mix; includes all inline elements, including %Misc.class; +--> +<!ENTITY % Inline.mix + "%Inline.class; + %Misc.class;" +> + +<!-- ..................... Block Elements ...................... --> + +<!-- In the HTML 4.0 DTD, heading and list elements were included + in the %block; parameter entity. The %Heading.class; and + %List.class; parameter entities must now be included explicitly + on element declarations where desired. +--> + +<!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 "" > + +<!-- %Block.class; includes all block elements, + used as an component in mixes +--> +<!ENTITY % Block.class + "%BlkStruct.class; + %BlkPhras.class; + %BlkPres.class; + %BlkSpecial.class; + %Block.extra;" +> + +<!-- %Block.mix; includes all block elements plus %Misc.class; +--> +<!ENTITY % Block.mix + "%Heading.class; + | %List.class; + | %Block.class; + %Misc.class;" +> + +<!-- ................ All Content Elements .................. --> + +<!-- %Flow.mix; includes all text content, block and inline +--> +<!ENTITY % Flow.mix + "%Heading.class; + | %List.class; + | %Block.class; + | %Inline.class; + %Misc.class;" +> +<!-- end of xhtml-rdfa-model-1.mod --> diff --git a/lv2specgen/lv2specgen.py b/lv2specgen/lv2specgen.py index e280b25..1b6400e 100755 --- a/lv2specgen/lv2specgen.py +++ b/lv2specgen/lv2specgen.py @@ -1386,6 +1386,19 @@ def specgen(specloc, indir, style_uri, docdir, tags, opts, instances=False, root if index_path is not None: writeIndex(m, specloc, index_path, root_path, root_uri) + # Validate complete output page + try: + oldcwd = os.getcwd() + os.chdir(specgendir) + root = etree.fromstring( + template.replace('"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd"', + '"DTD/xhtml-rdfa-1.dtd"').encode('utf-8'), + etree.XMLParser(dtd_validation=True, no_network=True)) + except Exception as e: + sys.stderr.write("error: Validation failed for %s: %s" % (specloc, e)) + finally: + os.chdir(oldcwd) + return template |