All Downloads are FREE. Search and download functionalities are using the official Maven repository.

relaxng.common.rnc Maven / Gradle / Ivy

The newest version!
datatypes w = "http://whattf.org/datatype-draft"

# #####################################################################
##  RELAX NG Schema for HTML 5: Common Definitions                    #
# #####################################################################


# #####################################################################
##  Language Parameters - redefine in inclusion block as necessary    #
# #####################################################################

## HTML vs. XHTML restrictions

	XMLonly = empty
	HTMLonly = notAllowed

## HTML 4 Compatibility - set to notAllowed to disallow markup introduced in HTML 5
#                         (This only affects mixed-version modules; wholly HTML5
#                          modules should simply be left out of the inclusion list.)

	v5only = empty

## HTML Compatibility Switches - set to notAllowed to disallow

	## XML features that can't be roundtripped HTML <-> XHTML
	#  (xml:base on elements other than )
	nonRoundtrippable = empty

	## XML features that can't be serialized as HTML
	nonHTMLizable = empty

## features that are not part of the W3C HTML spec
	nonW3C = empty

# #####################################################################
##  Wildcards                                                         #
# #####################################################################

## Any attribute from any namespace

	common.attr.anything =
		attribute * { text }*

## Any element from any namespace

	common.elem.anything =
		element * { common.inner.anything & common.attr.anything }

## Any content from any namespace

	common.inner.anything =
		(	text
		&	common.elem.anything*
		)

# #####################################################################
##  Common Element Classes                                            #
# #####################################################################

## Metadata Elements

	common.elem.metadata =
		( notAllowed )

## Phrase Elements

	common.elem.phrasing =
		( notAllowed )

## Prose Elements

	common.elem.flow =
		( common.elem.phrasing )


# #####################################################################
##  Common Content Models                                             #
# #####################################################################

## Metadata Content

	common.inner.metadata =
		( common.elem.metadata* )

## Phrase Content

	common.inner.phrasing =
		( text & common.elem.phrasing* )

## Prose Content

	common.inner.transparent.flow =
		( text & common.elem.flow* )

	common.inner.flow =
		(	style.elem.scoped*,
			(	text
			&	common.elem.flow*
			)
		)

# #####################################################################
##  Common Attributes                                                 #
# #####################################################################

# When updating, check  definition too

common.attrs =
	(	common.attrs.basic
	&	common.attrs.i18n
	&	common.attrs.present
	&	common.attrs.other
	)

common.attrs.basic =
	(	common.attrs.id?
	&	common.attrs.class?
	&	common.attrs.title?
	&	common.attrs.base?
	&	common.attrs.space?
	)
	common.attrs.id =
		attribute id {
			common.data.id
		}
	common.attrs.class =
		attribute class {
			common.data.tokens
		}
	common.attrs.title =
		attribute title {
			text
		}
	common.attrs.base =
		common.attrs.xmlbase
		& nonRoundtrippable
	common.attrs.xmlbase =
		attribute xml:base {
			common.data.uri
		} & XMLonly
	common.attrs.space =
		common.attrs.xmlspace
	common.attrs.xmlspace =
		attribute xml:space {
			string "preserve" | string "default"
		} & XMLonly

common.attrs.i18n =
	(	common.attrs.dir?
	&	common.attrs.language?
	&	common.attrs.translate?
	)
	common.attrs.dir =
		attribute dir {
			w:string "ltr" | w:string "rtl" | w:string "auto"
		}
	# This lang definition is a hack for enviroments where
	# the HTML5 parser maps lang to xml:lang.
	# Sameness check left to Schematron
	common.attrs.language =
		(	common.attrs.xmllang?
		&	common.attrs.lang?
		)
	common.attrs.lang =
		attribute lang {
			common.data.langcode
		} & XMLonly
	common.attrs.xmllang =
		attribute xml:lang {
			common.data.langcode
		}
#	common.attrs.language =
#		(	common.attrs.lang
#		|	common.attrs.xmllang
#		)
#	common.attrs.lang =
#		attribute lang {
#			common.data.langcode
#		} & HTMLonly
#	common.attrs.xmllang =
#		attribute xml:lang {
#			common.data.langcode
#		} & XMLonly
	common.attrs.translate =
		attribute translate {
			w:string "" | w:string "yes" | w:string "no"
		}

common.attrs.present =
	(	common.attrs.style?
	&	common.attrs.tabindex?
	&	common.attrs.accesskey?
	)
	common.attrs.style =
		attribute style {
			string
		}
	common.attrs.tabindex =
		attribute tabindex {
			common.data.integer
		}
		# REVISIT move style to a module and bundle tabindex with ARIA
	common.attrs.accesskey =
		attribute accesskey {
			common.data.keylabellist
		}

common.attrs.other =
	empty

# #####################################################################
##  Common Datatypes                                                  #
# #####################################################################

## Names and Tokens

	common.data.tokens =
		list { token* }

	common.data.browsing-context =
		w:browsing-context

	common.data.browsing-context-or-keyword =
		w:browsing-context-or-keyword
#		xsd:string {
#			pattern = "()|([^_].*)|(_[bB][lL][aA][nN][kK])|(_[sS][eE][lL][fF])|(_[pP][aA][rR][eE][nN][tT])|(_[tT][oO][pP])"
#		}


## IDs and IDREFs

	common.data.id =
		w:ID
#		xsd:string {
#			pattern = "\S+"
#		}

	common.data.idref =
		w:IDREF
		
	common.data.idrefs =
		w:IDREFS

	common.data.name =
		w:ID #FIXME

	common.data.hash-name =
		w:hash-name	
#		xsd:string {
#			pattern = "#.+"
#		}

## Numerical

	common.data.integer =
		w:integer
#		xsd:string {
#			pattern = "-?[0-9]+"
#		}

	common.data.integer.positive =
		w:integer-positive
#		xsd:string {
#			pattern = "0*[1-9][0-9]*"
#		}

	common.data.integer.non-negative =
		w:integer-non-negative
#		xsd:string {
#			pattern = "[0-9]+"
#		}
		
#	common.data.percent =
#		xsd:string {
#			pattern = "(100)|([1-9]?[0-9](\.[0-9]+)?)%"
#		}
		
	common.data.float =
		w:float
#		xsd:string {
#			pattern = "-?[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?"
#		}

	common.data.float.positive =
		w:float-positive
#		xsd:string {
#			pattern = "(0*[1-9][0-9]*(\.[0-9]+)?)|([0-9]+(\.0*[1-9][0-9]*)?)([eE]-?[0-9]+)?"
#		}
		
	common.data.float.non-negative =
		w:float-non-negative
#		xsd:string {
#			pattern = "[0-9]+(\.[0-9]+)?([eE]-?[0-9]+)?"
#		}
		
## Temporal

	common.data.datetime =
		w:datetime-tz

	common.data.date-or-time =
		w:date-or-time

	common.data.date =
		w:date

	common.data.time-datetime =
		w:time-datetime

## IRIs

	common.data.uri =
		# allow either a non-empty IRI ref or zero or more HTML
		# space characters (which are: space, tab, LF, FF, CR)
		(	w:iri-ref
		|	xsd:string {
				pattern = "[ \x{0A}-\x{0D}]*"
				# NOTE The range above incorrectly allows U+000B
				# in addition to the HTML space characters; but
				# that's not a problem in practice because HTML
				# and XML parsers will both catch any U+000B
				# and report an error for it before that pattern
				# ever gets evaluated.
		 	}
		)

	common.data.uri.non-empty =
		w:iri-ref

	common.data.uris =
		list { w:iri-ref* }

	common.data.uri.absolute =
		w:iri

##  sizes

	common.data.sizes =
#		list { w:sizes }
		list {
			xsd:string {
				pattern = "[1-9][0-9]*x[1-9][0-9]*"
			}+
		}

## MIME types

	common.data.mimetype =
		w:mime-type

## Encodings

	common.data.charset =
		w:charset

	common.data.meta-charset =
		w:meta-charset

## Refresh

	common.data.refresh =
		w:refresh

## Default style

	common.data.default-style =
        string
#		w:default-style

## Media Queries

	common.data.mediaquery =
		w:media-query

## Language Codes

	common.data.langcode =
		w:string "" | w:language

## List of Key Labels
	common.data.keylabellist =
		w:keylabellist

## Microdata Properties
  common.data.microdata-properties =
    list { w:microdata-property+ }

## Zero
  common.data.zero =
    w:zero

## ECMAScript FunctionBody
  common.data.functionbody =
    w:functionbody

# #####################################################################
##  WF2 Module Hook                                                   #
# #####################################################################
		
common-form.attrs.form = ( notAllowed )

# #####################################################################
##  Script-supporting elements
# #####################################################################

common.elem.script-supporting = ( notAllowed )

# #####################################################################
##  ARIA Module Hooks                                                 #
# #####################################################################

common.attrs.aria = ( notAllowed )
common.attrs.aria.role.alert = ( notAllowed )
common.attrs.aria.role.alertdialog = ( notAllowed )
common.attrs.aria.role.application = ( notAllowed )
common.attrs.aria.role.article = ( notAllowed )
common.attrs.aria.role.banner = ( notAllowed )
common.attrs.aria.role.button = ( notAllowed )
common.attrs.aria.role.checkbox = ( notAllowed )
common.attrs.aria.role.combobox = ( notAllowed )
common.attrs.aria.role.complementary = ( notAllowed )
common.attrs.aria.role.contentinfo = ( notAllowed )
common.attrs.aria.role.dialog = ( notAllowed )
common.attrs.aria.role.directory = ( notAllowed )
common.attrs.aria.role.document = ( notAllowed )
common.attrs.aria.role.group = ( notAllowed )
common.attrs.aria.role.heading = ( notAllowed )
common.attrs.aria.role.img = ( notAllowed )
common.attrs.aria.role.link = ( notAllowed )
common.attrs.aria.role.list = ( notAllowed )
common.attrs.aria.role.listitem = ( notAllowed )
common.attrs.aria.role.log = ( notAllowed )
common.attrs.aria.role.listbox = ( notAllowed )
common.attrs.aria.role.main = ( notAllowed )
common.attrs.aria.role.marquee = ( notAllowed )
common.attrs.aria.role.menu = ( notAllowed )
common.attrs.aria.role.menubar = ( notAllowed )
common.attrs.aria.role.menuitem = ( notAllowed )
common.attrs.aria.role.menuitemcheckbox = ( notAllowed )
common.attrs.aria.role.menuitemradio = ( notAllowed )
common.attrs.aria.role.note = ( notAllowed )
common.attrs.aria.role.option = ( notAllowed )
common.attrs.aria.role.presentation = ( notAllowed )
common.attrs.aria.role.progressbar = ( notAllowed )
common.attrs.aria.role.radio = ( notAllowed )
common.attrs.aria.role.region = ( notAllowed )
common.attrs.aria.role.search = ( notAllowed )
common.attrs.aria.role.separator = ( notAllowed )
common.attrs.aria.role.slider = ( notAllowed )
common.attrs.aria.role.spinbutton = ( notAllowed )
common.attrs.aria.role.status = ( notAllowed )
common.attrs.aria.role.tab = ( notAllowed )
common.attrs.aria.role.tablist = ( notAllowed )
common.attrs.aria.role.tabpanel = ( notAllowed )
common.attrs.aria.role.textbox = ( notAllowed )
common.attrs.aria.role.toolbar = ( notAllowed )
common.attrs.aria.role.tree = ( notAllowed )
common.attrs.aria.role.treeitem = ( notAllowed )
common.attrs.aria.implicit.article = ( notAllowed )
common.attrs.aria.implicit.banner = ( notAllowed )
common.attrs.aria.implicit.button = ( notAllowed )
common.attrs.aria.implicit.checkbox = ( notAllowed )
common.attrs.aria.implicit.columnheader = ( notAllowed )
common.attrs.aria.implicit.combobox = ( notAllowed )
common.attrs.aria.implicit.complementary = ( notAllowed )
common.attrs.aria.implicit.contentinfo = ( notAllowed )
common.attrs.aria.implicit.dialog = ( notAllowed )
common.attrs.aria.implicit.document = ( notAllowed )
common.attrs.aria.implicit.group = ( notAllowed )
common.attrs.aria.implicit.heading = ( notAllowed )
common.attrs.aria.implicit.img = ( notAllowed )
common.attrs.aria.implicit.landmark = ( notAllowed )
common.attrs.aria.implicit.link = ( notAllowed )
common.attrs.aria.implicit.list = ( notAllowed )
common.attrs.aria.implicit.listbox = ( notAllowed )
common.attrs.aria.implicit.listitem = ( notAllowed )
common.attrs.aria.implicit.main = ( notAllowed )
common.attrs.aria.implicit.navigation = ( notAllowed )
common.attrs.aria.implicit.option = ( notAllowed )
common.attrs.aria.implicit.progressbar = ( notAllowed )
common.attrs.aria.implicit.radio = ( notAllowed )
common.attrs.aria.implicit.region = ( notAllowed )
common.attrs.aria.implicit.rowheader = ( notAllowed )
common.attrs.aria.implicit.section = ( notAllowed )
common.attrs.aria.implicit.select = ( notAllowed )
common.attrs.aria.implicit.slider = ( notAllowed )
common.attrs.aria.implicit.spinbutton = ( notAllowed )
common.attrs.aria.implicit.status = ( notAllowed )
common.attrs.aria.implicit.structure = ( notAllowed )
common.attrs.aria.implicit.textbox = ( notAllowed )
common.attrs.aria.implicit.toolbar = ( notAllowed )
common.attrs.aria.prop.readonly = ( notAllowed )
common.attrs.aria.landmark.application = ( notAllowed )
common.attrs.aria.landmark.banner = ( notAllowed )
common.attrs.aria.landmark.complementary = ( notAllowed )
common.attrs.aria.landmark.contentinfo = ( notAllowed )
common.attrs.aria.landmark.form = ( notAllowed )
common.attrs.aria.landmark.main = ( notAllowed )
common.attrs.aria.landmark.navigation = ( notAllowed )
common.attrs.aria.landmark.search = ( notAllowed )
# per ARIA spec: article, document, and note are not actually landmarks
common.attrs.aria.landmark.article = ( notAllowed )
common.attrs.aria.landmark.document = ( notAllowed )
common.attrs.aria.landmark.note = ( notAllowed )




© 2015 - 2024 Weber Informatics LLC | Privacy Policy