]> granicus.if.org Git - docbook-dsssl/commitdiff
added explicit support for Dublin Core metadata
authorScott Hudson <scottys.log@gmail.com>
Thu, 29 May 2008 16:00:28 +0000 (16:00 +0000)
committerScott Hudson <scottys.log@gmail.com>
Thu, 29 May 2008 16:00:28 +0000 (16:00 +0000)
docbook/relaxng/publishers/src/dc.rnc [new file with mode: 0644]
docbook/relaxng/publishers/src/dcmitype.rnc [new file with mode: 0644]
docbook/relaxng/publishers/src/dcterms.rnc [new file with mode: 0644]

diff --git a/docbook/relaxng/publishers/src/dc.rnc b/docbook/relaxng/publishers/src/dc.rnc
new file mode 100644 (file)
index 0000000..97ac0bf
--- /dev/null
@@ -0,0 +1,105 @@
+default namespace = "http://purl.org/dc/elements/1.1/"\r
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"\r
+namespace rng = "http://relaxng.org/ns/structure/1.0"\r
+datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"\r
+namespace dc = "http://purl.org/dc/elements/1.1/"\r
+\r
+a:documentation [\r
+  "\x{a}" ~\r
+  "    \x{a}" ~\r
+  "      DCMES 1.1 XML Schema\x{a}" ~\r
+  "      XML Schema for http://purl.org/dc/elements/1.1/ namespace\x{a}" ~\r
+  "\x{a}" ~\r
+  "      Created 2008-02-11\x{a}" ~\r
+  "\x{a}" ~\r
+  "      Created by \x{a}" ~\r
+  "\x{a}" ~\r
+  "      Tim Cole (t-cole3@uiuc.edu)\x{a}" ~\r
+  "      Tom Habing (thabing@uiuc.edu)\x{a}" ~\r
+  "      Jane Hunter (jane@dstc.edu.au)\x{a}" ~\r
+  "      Pete Johnston (p.johnston@ukoln.ac.uk),\x{a}" ~\r
+  "      Carl Lagoze (lagoze@cs.cornell.edu)\x{a}" ~\r
+  "\x{a}" ~\r
+  "      This schema declares XML elements for the 15 DC elements from the\x{a}" ~\r
+  "      http://purl.org/dc/elements/1.1/ namespace.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      It defines a complexType SimpleLiteral which permits mixed content \x{a}" ~\r
+  "      and makes the xml:lang attribute available. It disallows child elements by\x{a}" ~\r
+  "      use of minOcccurs/maxOccurs.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      However, this complexType does permit the derivation of other complexTypes\x{a}" ~\r
+  "      which would permit child elements.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      All elements are declared as substitutable for the abstract element any, \x{a}" ~\r
+  "      which means that the default type for all elements is dc:SimpleLiteral.\x{a}" ~\r
+  "\x{a}" ~\r
+  "    \x{a}" ~\r
+  "\x{a}" ~\r
+  "  "\r
+]\r
+\r
+## \r
+##         \r
+##             This is the default type for all of the DC elements.\r
+##             It permits text content only with optional\r
+##             xml:lang attribute.\r
+##             Text is allowed because mixed="true", but sub-elements\r
+##             are disallowed because minOccurs="0" and maxOccurs="0" \r
+##             are on the xs:any tag.\r
+## \r
+##                 This complexType allows for restriction or extension permitting\r
+##             child elements.\r
+##             \r
+##   \r
+\r
+start |= dc.title\r
+| dc.creator \r
+| dc.subject\r
+| dc.description\r
+| dc.publisher\r
+| dc.contributor\r
+| dc.date\r
+| dc.type\r
+| dc.format\r
+| dc.identifier\r
+| dc.source\r
+| dc.language\r
+| dc.relation\r
+| dc.coverage\r
+| dc.rights\r
+| dc.any\r
+\r
+SimpleLiteral |= element * { text }?\r
+dc.any |= element any { SimpleLiteral }\r
+dc.title |= element title { text }\r
+dc.creator |= element creator { text }\r
+dc.subject |= element subject { text }\r
+dc.description |= element description { text }\r
+dc.publisher |= element publisher { text }\r
+dc.contributor |= element contributor { text }\r
+dc.date |= element date { text }\r
+dc.type |= element type { text }\r
+dc.format |= element format { text }\r
+dc.identifier |= element identifier { text }\r
+dc.source |= element source { text }\r
+dc.language |= element language { text }\r
+dc.relation |= element relation { text }\r
+dc.coverage |= element coverage { text }\r
+dc.rights |= element rights { text }\r
+\r
+## \r
+##             \r
+##                 This group is included as a convenience for schema authors\r
+##             who need to refer to all the elements in the \r
+##             http://purl.org/dc/elements/1.1/ namespace.\r
+##             \r
+##     \r
+elementsGroup |= text\r
+\r
+## \r
+##             \r
+##                     This complexType is included as a convenience for schema authors who need to define a root\r
+##                     or container element for all of the DC elements.\r
+##             \r
+##     \r
+elementContainer |= elementsGroup\r
diff --git a/docbook/relaxng/publishers/src/dcmitype.rnc b/docbook/relaxng/publishers/src/dcmitype.rnc
new file mode 100644 (file)
index 0000000..cde26df
--- /dev/null
@@ -0,0 +1,39 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"\r
+namespace rng = "http://relaxng.org/ns/structure/1.0"\r
+\r
+a:documentation [\r
+  "\x{a}" ~\r
+  "    \x{a}" ~\r
+  "      DCMI Type Vocabulary XML Schema\x{a}" ~\r
+  "      XML Schema for http://purl.org/dc/dcmitype/ namespace\x{a}" ~\r
+  "\x{a}" ~\r
+  "      Created 2008-02-11\x{a}" ~\r
+  "\x{a}" ~\r
+  "      Created by \x{a}" ~\r
+  "\x{a}" ~\r
+  "      Tim Cole (t-cole3@uiuc.edu)\x{a}" ~\r
+  "      Tom Habing (thabing@uiuc.edu)\x{a}" ~\r
+  "      Jane Hunter (jane@dstc.edu.au)\x{a}" ~\r
+  "      Pete Johnston (p.johnston@ukoln.ac.uk),\x{a}" ~\r
+  "      Carl Lagoze (lagoze@cs.cornell.edu)\x{a}" ~\r
+  "\x{a}" ~\r
+  "      This schema defines a simpleType which enumerates\x{a}" ~\r
+  "      the allowable values for the DCMI Type Vocabulary.\x{a}" ~\r
+  "    \x{a}" ~\r
+  "\x{a}" ~\r
+  " \x{a}" ~\r
+  "  "\r
+]\r
+DCMIType |=\r
+  "Collection"\r
+  | "Dataset"\r
+  | "Event"\r
+  | "Image"\r
+  | "MovingImage"\r
+  | "StillImage"\r
+  | "InteractiveResource"\r
+  | "Service"\r
+  | "Software"\r
+  | "Sound"\r
+  | "Text"\r
+  | "PhysicalObject"\r
diff --git a/docbook/relaxng/publishers/src/dcterms.rnc b/docbook/relaxng/publishers/src/dcterms.rnc
new file mode 100644 (file)
index 0000000..e9573f8
--- /dev/null
@@ -0,0 +1,200 @@
+default namespace = "http://purl.org/dc/terms/"\r
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"\r
+namespace dc = "http://purl.org/dc/elements/1.1/"\r
+namespace dcterms = "http://purl.org/dc/terms/"\r
+namespace dcmitype = "http://purl.org/dc/dcmitype/"\r
+namespace rng = "http://relaxng.org/ns/structure/1.0"\r
+datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"\r
+\r
+a:documentation [\r
+  "\x{a}" ~\r
+  "    \x{a}" ~\r
+  "      DCterms XML Schema\x{a}" ~\r
+  "      XML Schema for http://purl.org/dc/terms/ namespace\x{a}" ~\r
+  " \x{a}" ~\r
+  "      Created 2008-02-11\x{a}" ~\r
+  "\x{a}" ~\r
+  "      Created by \x{a}" ~\r
+  "\x{a}" ~\r
+  "      Tim Cole (t-cole3@uiuc.edu)\x{a}" ~\r
+  "      Tom Habing (thabing@uiuc.edu)\x{a}" ~\r
+  "      Jane Hunter (jane@dstc.edu.au)\x{a}" ~\r
+  "      Pete Johnston (p.johnston@ukoln.ac.uk),\x{a}" ~\r
+  "      Carl Lagoze (lagoze@cs.cornell.edu)\x{a}" ~\r
+  "\x{a}" ~\r
+  "      This schema declares XML elements for the DC elements and\x{a}" ~\r
+  "      DC element refinements from the http://purl.org/dc/terms/ namespace.\x{a}" ~\r
+  "      \x{a}" ~\r
+  "      It reuses the complexType dc:SimpleLiteral, imported from the dc.xsd\x{a}" ~\r
+  "      schema, which permits simple element content, and makes the xml:lang\x{a}" ~\r
+  "      attribute available.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      This complexType permits the derivation of other complexTypes\x{a}" ~\r
+  "      which would permit child elements.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      XML elements corresponding to DC elements are declared as substitutable for the abstract element dc:any, and \x{a}" ~\r
+  "      XML elements corresponding to DC element refinements are defined as substitutable for the base elements \x{a}" ~\r
+  "      which they refine.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      This means that the default type for all XML elements (i.e. corresponding to all DC elements and \x{a}" ~\r
+  "      element refinements) is dc:SimpleLiteral.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      Encoding schemes are defined as complexTypes which are restrictions\x{a}" ~\r
+  "      of the dc:SimpleLiteral complexType. These complexTypes restrict \x{a}" ~\r
+  "      values to an appropriates syntax or format using data typing,\x{a}" ~\r
+  "      regular expressions, or enumerated lists.\x{a}" ~\r
+  "  \x{a}" ~\r
+  "      In order to specify one of these encodings an xsi:type attribute must \x{a}" ~\r
+  "      be used in the instance document.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      Also, note that one shortcoming of this approach is that any type can be \x{a}" ~\r
+  "      applied to any of the elements or refinements.  There is no convenient way\x{a}" ~\r
+  "      to restrict types to specific elements using this approach.\x{a}" ~\r
+  "\x{a}" ~\r
+  "      Changes in 2008-02-11 version:\x{a}" ~\r
+  "      \x{a}" ~\r
+  "      Add element declarations corresponding to 15 new dcterms URIs, and amend use of substitutionGroups.\x{a}" ~\r
+  "      \x{a}" ~\r
+  "      Add compexType definitions corresponding to ISO639-3, RFC4646.\x{a}" ~\r
+  "      \x{a}" ~\r
+  "    \x{a}" ~\r
+  "\x{a}" ~\r
+  "  "\r
+]\r
+include "dc.rnc" inherit = dc {start|=notAllowed}\r
+include "dcmitype.rnc" inherit = dcmitype\r
+\r
+start |= dc.title\r
+| dc.creator \r
+| dc.subject\r
+| dc.description\r
+| dc.publisher\r
+| dc.contributor\r
+| dc.date\r
+| dc.type\r
+| dc.format\r
+| dc.identifier\r
+| dc.source\r
+| dc.language\r
+| dc.relation\r
+| dc.coverage\r
+| dc.rights\r
+| dcterms.alternative\r
+| dcterms.tableOfContents\r
+| dcterms.abstract\r
+| dcterms.created\r
+| dcterms.valid\r
+| dcterms.available\r
+| dcterms.issued\r
+| dcterms.modified\r
+| dcterms.dateAccepted\r
+| dcterms.dateCopyrighted\r
+| dcterms.dateSubmitted\r
+| dcterms.extent\r
+| dcterms.medium\r
+| dcterms.isVersionOf\r
+| dcterms.hasVersion\r
+| dcterms.isReplacedBy\r
+| dcterms.replaces\r
+| dcterms.isRequiredBy\r
+| dcterms.requires\r
+| dcterms.isPartOf\r
+| dcterms.hasPart\r
+| dcterms.isReferencedBy\r
+| dcterms.references\r
+| dcterms.isFormatOf\r
+| dcterms.hasFormat\r
+| dcterms.conformsTo\r
+| dcterms.spatial\r
+| dcterms.temporal\r
+| dcterms.audience\r
+| dcterms.accrualMethod\r
+| dcterms.accrualPeriodicity\r
+| dcterms.accrualPolicy\r
+| dcterms.instructionalMethod\r
+| dcterms.provenance\r
+| dcterms.rightsHolder\r
+| dcterms.mediator\r
+| dcterms.educationLevel\r
+| dcterms.accessRights\r
+| dcterms.license\r
+| dcterms.bibliographicCitation\r
+\r
+dcterms.alternative |= element alternative { text }\r
+dcterms.tableOfContents |= element tableOfContents { text }\r
+dcterms.abstract |= element abstract { text }\r
+dcterms.created |= element created { text }\r
+dcterms.valid |= element valid { text }\r
+dcterms.available |= element available { text }\r
+dcterms.issued |= element issued { text }\r
+dcterms.modified |= element modified { text }\r
+dcterms.dateAccepted |= element dateAccepted { text }\r
+dcterms.dateCopyrighted |= element dateCopyrighted { text }\r
+dcterms.dateSubmitted |= element dateSubmitted { text }\r
+dcterms.extent |= element extent { text }\r
+dcterms.medium |= element medium { text }\r
+dcterms.isVersionOf |= element isVersionOf { text }\r
+dcterms.hasVersion |= element hasVersion { text }\r
+dcterms.isReplacedBy |= element isReplacedBy { text }\r
+dcterms.replaces |= element replaces { text }\r
+dcterms.isRequiredBy |= element isRequiredBy { text }\r
+dcterms.requires |= element requires { text }\r
+dcterms.isPartOf |= element isPartOf { text }\r
+dcterms.hasPart |= element hasPart { text }\r
+dcterms.isReferencedBy |= element isReferencedBy { text }\r
+dcterms.references |= element references { text }\r
+dcterms.isFormatOf |= element isFormatOf { text }\r
+dcterms.hasFormat |= element hasFormat { text }\r
+dcterms.conformsTo |= element conformsTo { text }\r
+dcterms.spatial |= element spatial { text }\r
+dcterms.temporal |= element temporal { text }\r
+dcterms.audience |= element audience { text }\r
+dcterms.accrualMethod |= element accrualMethod { text }\r
+dcterms.accrualPeriodicity |= element accrualPeriodicity { text }\r
+dcterms.accrualPolicy |= element accrualPolicy { text }\r
+dcterms.instructionalMethod |= element instructionalMethod { text }\r
+dcterms.provenance |= element provenance { text }\r
+dcterms.rightsHolder |= element rightsHolder { text }\r
+dcterms.mediator |= element mediator { text }\r
+dcterms.educationLevel |= element educationLevel { text }\r
+dcterms.accessRights |= element accessRights { text }\r
+dcterms.license |= element license { text }\r
+dcterms.bibliographicCitation |= element bibliographicCitation { text }\r
+LCSH |= SimpleLiteral, xsd:string\r
+MESH |= SimpleLiteral, xsd:string\r
+DDC |= SimpleLiteral, xsd:string\r
+LCC |= SimpleLiteral, xsd:string\r
+UDC |= SimpleLiteral, xsd:string\r
+Period |= SimpleLiteral, xsd:string\r
+W3CDTF |= SimpleLiteral\r
+DCMIType |= SimpleLiteral, DCMIType\r
+IMT |= SimpleLiteral, xsd:string\r
+URI |= SimpleLiteral, xsd:anyURI\r
+ISO639-2 |= SimpleLiteral, xsd:string\r
+ISO639-3 |= SimpleLiteral, xsd:string\r
+RFC1766 |= SimpleLiteral, xsd:language\r
+RFC3066 |= SimpleLiteral, xsd:language\r
+RFC4646 |= SimpleLiteral, xsd:language\r
+Point |= SimpleLiteral, xsd:string\r
+ISO3166 |= SimpleLiteral, xsd:string\r
+Box |= SimpleLiteral, xsd:string\r
+TGN |= SimpleLiteral, xsd:string\r
+\r
+## \r
+##             \r
+##                     This group is included as a convenience for schema authors\r
+##             who need to refer to all the DC elements and element refinements \r
+##             in the http://purl.org/dc/elements/1.1/ and \r
+##             http://purl.org/dc/terms namespaces. \r
+##             N.B. Refinements available via substitution groups.\r
+##             \r
+##     \r
+elementsAndRefinementsGroup |= text\r
+\r
+## \r
+##             \r
+##                     This is included as a convenience for schema authors who need to define a root\r
+##                     or container element for all of the DC elements and element refinements.\r
+##             \r
+##     \r
+elementOrRefinementContainer |= elementsAndRefinementsGroup\r