blob: 3c849d98a954664034c1d536dba0148eb48beecf [file] [log] [blame]
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