]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/html5-schema/rdfa.rnc
Add 'packages/html5-schema/' from commit '6e7c7c331e7f6692be6c7d39fb9485792f0d3513'
[gnu-emacs-elpa] / packages / html5-schema / rdfa.rnc
diff --git a/packages/html5-schema/rdfa.rnc b/packages/html5-schema/rdfa.rnc
new file mode 100644 (file)
index 0000000..3c849d9
--- /dev/null
@@ -0,0 +1,285 @@
+nonRDFaLite = empty
+# #####################################################################
+##  RELAX NG Schema for HTML 5: RDFa 1.1 and RDFa Lite 1.1            #
+# #####################################################################
+
+# #####################################################################
+##  RDFa Datatypes                                                    #
+# #####################################################################
+
+common.data.rdfa.safecurie =
+       xsd:string {
+               pattern = "\[(([\i-[:]][\c-[:]]*)?:?)[^\s]*\]"
+               minLength = "2"
+       }
+common.data.rdfa.curie =
+       xsd:string {
+               pattern = "(([\i-[:]][\c-[:]]*)?:)[^\s]*"
+               minLength = "1"
+       }
+common.data.rdfa.term =
+       xsd:string {
+               pattern = "[\i-[:]][/\c-[:]]*"
+       }
+
+# #####################################################################
+##  RDFa Attributes                                                   #
+# #####################################################################
+
+common.attrs.rdfa &=
+       (       common.attrs.rdfa.about?
+       &       common.attrs.rdfa.prefix?
+       &       common.attrs.rdfa.property?
+       &       common.attrs.rdfa.typeof?
+       &       common.attrs.rdfa.vocab?
+       &       common.attrs.rdfa.content?
+       &       common.attrs.rdfa.datatype?
+       &       common.attrs.rdfa.rel?
+       &       common.attrs.rdfa.resource?
+       &       common.attrs.rdfa.rev?
+       &       common.attrs.rdfa.inlist?
+       )
+       common.attrs.rdfa.prefix =
+               attribute prefix {
+                       (
+                               xsd:string {
+                                       pattern = "\s*([\i-[:]][\c-[:]]*: [^ ]+)(\s+[\i-[:]][\c-[:]]*: [^ ]+)*\s*"
+                               }
+                               |       string ""
+                       )
+               }
+       common.attrs.rdfa.property =
+               attribute property {
+                       (
+                               list {
+                                       (       common.data.rdfa.term
+                                       |       common.data.rdfa.curie
+                                       |       common.data.uri.absolute
+                                       )+
+                               }
+                       |       string ""
+                       )
+               }
+       common.attrs.rdfa.resource =
+               attribute resource {
+                       (       common.data.rdfa.safecurie
+                       |       common.data.rdfa.curie
+                       |       common.data.uri
+                       )
+               }
+       common.attrs.rdfa.typeof =
+               attribute typeof {
+                       (
+                       list {
+                               (       common.data.rdfa.term
+                               |       common.data.rdfa.curie
+                               |       common.data.uri.absolute
+                               )+
+                       }
+                       |       string ""
+                       )
+               }
+       common.attrs.rdfa.vocab =
+               attribute vocab {
+                       (       common.data.uri.absolute
+                       |       string ""
+                       )
+               }
+       common.attrs.rdfa.about =
+               attribute about {
+                       (       common.data.rdfa.safecurie
+                       |       common.data.rdfa.curie
+                       |       common.data.uri
+                       )
+               } & nonRDFaLite
+       common.attrs.rdfa.content =
+               attribute content {
+                       string
+               } & nonRDFaLite
+       common.attrs.rdfa.datatype =
+               attribute datatype {
+                       (       common.data.rdfa.term
+                       |       common.data.rdfa.curie
+                       |       common.data.uri.absolute
+                       |       string ""
+                       )
+               } & nonRDFaLite
+       common.attrs.rdfa.rel =
+               attribute rel {
+                       (
+                               list {
+                                       (       common.data.rdfa.term
+                                       |       common.data.rdfa.curie
+                                       |       common.data.uri.absolute
+                                       )+
+                               }
+                               |       string ""
+                       )
+               } & nonRDFaLite
+       common.attrs.rdfa.rev =
+               attribute rev {
+                       (
+                               list {
+                                       (       common.data.rdfa.term
+                                       |       common.data.rdfa.curie
+                                       |       common.data.uri.absolute
+                                       )+
+                               }
+                               |       string ""
+                       )
+               } & nonRDFaLite
+       common.attrs.rdfa.inlist =
+               attribute inlist {
+                       string
+               } & nonRDFaLite
+
+common.attrs.rdfa.no-rel &=
+       (       common.attrs.rdfa.about?
+       &       common.attrs.rdfa.prefix?
+       &       common.attrs.rdfa.property?
+       &       common.attrs.rdfa.typeof?
+       &       common.attrs.rdfa.vocab?
+       &       common.attrs.rdfa.content?
+       &       common.attrs.rdfa.datatype?
+       &       common.attrs.rdfa.resource?
+       &       common.attrs.rdfa.rev?
+       &       common.attrs.rdfa.inlist?
+       )
+common.attrs.rdfa.no-rel-rev &=
+       (       common.attrs.rdfa.about?
+       &       common.attrs.rdfa.prefix?
+       &       common.attrs.rdfa.property?
+       &       common.attrs.rdfa.typeof?
+       &       common.attrs.rdfa.vocab?
+       &       common.attrs.rdfa.content?
+       &       common.attrs.rdfa.datatype?
+       &       common.attrs.rdfa.resource?
+       &       common.attrs.rdfa.inlist?
+       )
+common.attrs.rdfa.no-content-noproperty &=
+       (       common.attrs.rdfa.about?
+       &       common.attrs.rdfa.prefix?
+       &       common.attrs.rdfa.typeof?
+       &       common.attrs.rdfa.vocab?
+       &       common.attrs.rdfa.datatype?
+       &       common.attrs.rdfa.resource?
+       &       common.attrs.rdfa.inlist?
+       )
+
+common.attrs &= common.attrs.rdfa
+
+a.attrs &= common.attrs.rdfa.no-rel-rev
+area.attrs &= common.attrs.rdfa.no-rel
+base.attrs &= common.attrs.rdfa.no-rel
+
+link.rdfa.elem.metadata =
+       element link { link.inner & link.rdfa.attrs.metadata }
+link.rdfa.elem.phrasing =
+       element link { link.inner & link.rdfa.attrs.phrasing }
+link.rdfa.attrs.metadata =
+       (       common.attrs.basic
+       &       common.attrs.i18n
+       &       common.attrs.present
+       &       common.attrs.other
+       &       (       (       common.attrs.rdfa.property
+                       &       link.attrs.rel?
+                       )
+                       |
+                       (       common.attrs.rdfa.property?
+                       &       link.attrs.rel
+                       )
+               )
+       &       link.attrs.href
+       &       common.attrs.rdfa.about?
+       &       common.attrs.rdfa.prefix?
+       &       common.attrs.rdfa.typeof?
+       &       common.attrs.rdfa.vocab?
+       &       common.attrs.rdfa.content?
+       &       common.attrs.rdfa.datatype?
+       &       common.attrs.rdfa.resource?
+       &       common.attrs.rdfa.rev?
+       &       common.attrs.rdfa.inlist?
+       &       shared-hyperlink.attrs.hreflang?
+       &       shared-hyperlink.attrs.media?
+       &       shared-hyperlink.attrs.type?
+       &       link.attrs.sizes?
+       #       link.attrs.title included in common.attrs
+       &       embedded.content.attrs.crossorigin?
+       &       (       common.attrs.aria.role.link
+               |       common.attrs.aria.role.presentation
+               |       common.attrs.aria.role.menuitem
+               )?
+       )
+link.rdfa.attrs.phrasing =
+       (       common.attrs.basic
+       &       common.attrs.i18n
+       &       common.attrs.present
+       &       common.attrs.other
+       &       common.attrs.rdfa.property
+       &       link.attrs.rel?
+       &       (       (       common.attrs.rdfa.resource
+                       &       link.attrs.href?
+                       )
+                       |
+                       (       common.attrs.rdfa.resource?
+                       &       link.attrs.href
+                       )
+               )
+       &       common.attrs.rdfa.about?
+       &       common.attrs.rdfa.prefix?
+       &       common.attrs.rdfa.typeof?
+       &       common.attrs.rdfa.vocab?
+       &       common.attrs.rdfa.content?
+       &       common.attrs.rdfa.datatype?
+       &       common.attrs.rdfa.rev?
+       &       common.attrs.rdfa.inlist?
+       &       shared-hyperlink.attrs.hreflang?
+       &       shared-hyperlink.attrs.media?
+       &       shared-hyperlink.attrs.type?
+       &       link.attrs.sizes?
+       #       link.attrs.title included in common.attrs
+       &       embedded.content.attrs.crossorigin?
+       &       (       common.attrs.aria.role.link
+               |       common.attrs.aria.role.presentation
+               |       common.attrs.aria.role.menuitem
+               )?
+       )
+       common.elem.metadata |= link.rdfa.elem.metadata
+       common.elem.phrasing |= link.rdfa.elem.phrasing
+
+## <meta property=foo content=bar> in head ("name" attribute optional)
+       meta.property.elem =
+               element meta { meta.inner & meta.property.attrs }
+       meta.property.attrs =
+               (       common.attrs.basic
+               &       common.attrs.i18n
+               &       common.attrs.present
+               &       common.attrs.other
+               &       meta.name.attrs.name?
+               &       common.attrs.rdfa.property
+               &       meta.name.attrs.content
+               &       (       common.attrs.aria.role.presentation
+                       |       common.attrs.aria.role.menuitem
+                       )?
+               )
+       common.elem.metadata |= meta.property.elem
+
+## <meta property=foo content=bar> in body ("name" attribute disallowed)
+       meta.property-no-name.elem =
+               element meta { meta.inner & meta.property-no-name.attrs }
+       meta.property-no-name.attrs =
+               (       common.attrs.basic
+               &       common.attrs.i18n
+               &       common.attrs.present
+               &       common.attrs.other
+               &       common.attrs.rdfa.property
+               &       meta.name.attrs.content
+               &       (       common.attrs.aria.role.presentation
+                       |       common.attrs.aria.role.menuitem
+                       )?
+               )
+       common.elem.phrasing |= meta.property-no-name.elem
+
+meta.property.attrs &= common.attrs.rdfa.no-content-noproperty
+meta.property-no-name.attrs &= common.attrs.rdfa.no-content-noproperty
+meta.name.attrs &= common.attrs.rdfa.no-content-noproperty