datatypes w = "http://whattf.org/datatype-draft"

# #####################################################################
##  RELAX NG Schema for HTML 5: Static Data Markup                    #
# #####################################################################

## Time: <time>

	time.elem =
		element time { time.inner & time.attrs }
	time.attrs =
		(	common.attrs
		&	time.attrs.datetime?
		&	(	common.attrs.aria.role.presentation
			|	common.attrs.aria.role.menuitem
			)?
		)
		time.attrs.datetime =
			attribute datetime {
				common.data.time-datetime
			}
		time.attrs.datetime.dateonly =
			attribute datetime {
				common.data.date
			}
		time.attrs.datetime.tz =
			attribute datetime {
				common.data.datetime
			}
	time.inner =
		( common.inner.phrasing ) #Cannot enforce textContent format here

	common.elem.phrasing |= time.elem

## Data: <data>

	data.elem =
		element data { data.inner & data.attrs }
	data.attrs =
		(	common.attrs
		&	data.attrs.value
		&	(	common.attrs.aria.role.presentation
			|	common.attrs.aria.role.menuitem
			)?
		)
		data.attrs.value =
			attribute value {
				string
			}
	data.inner =
		( common.inner.phrasing )

	common.elem.phrasing |= data.elem

## Scalar Gauge: <meter>

	meter.elem =
		element meter { meter.inner & meter.attrs }
	meter.attrs =
		(	common.attrs
		&	meter.attrs.value
		&	meter.attrs.min?
		&	meter.attrs.low?
		&	meter.attrs.high?
		&	meter.attrs.max?
		&	meter.attrs.optimum?
		&	(	common.attrs.aria.role.presentation
			|	common.attrs.aria.role.menuitem
			)?
		)
		meter.attrs.value =
			attribute value {
				common.data.float
			}
		meter.attrs.min =
			attribute min {
				common.data.float
			}
		meter.attrs.low =
			attribute low {
				common.data.float
			}
		meter.attrs.high =
			attribute high {
				common.data.float
			}
		meter.attrs.max =
			attribute max {
				common.data.float
			}
		meter.attrs.optimum =
			attribute optimum {
				common.data.float
			}
	meter.inner =
		( common.inner.phrasing ) #Cannot enforce textContent format here

	common.elem.phrasing |= meter.elem
