summaryrefslogtreecommitdiff
path: root/xml/relaxng/src/resources/html5-schema/html5/microdata.rnc
blob: 076a4ded1dad15d06f8faeef6a284fd9a3bd2ab1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
datatypes w = "http://whattf.org/datatype-draft"

# #####################################################################
##  RELAX NG Schema for HTML 5: Microdata                             #
# #####################################################################

common.attrs.microdata =
	(	common.attrs.microdata.itemref?
	&	common.attrs.microdata.itemprop?
	&	common.attrs.microdata.itemscope?
	&	common.attrs.microdata.itemtype?
	&	common.attrs.microdata.itemid?
	)
	common.attrs.microdata.itemref =
		attribute itemref {
			common.data.idrefs
		}
	common.attrs.microdata.itemprop =
		attribute itemprop {
			common.data.microdata-properties
		}
	common.attrs.microdata.itemscope =
		attribute itemscope {
			w:string "itemscope" | w:string ""
		}
	common.attrs.microdata.itemtype =
		attribute itemtype {
			common.data.uri.absolute
		}
	common.attrs.microdata.itemid =
		attribute itemid {
			common.data.uri
		}

common.attrs &= common.attrs.microdata

a.attrs &= common.attrs.microdata
area.attrs &= common.attrs.microdata
base.attrs &= common.attrs.microdata

## URL-valued Property Metadata: <link itemprop>

	link.elem.phrasing =
		element link { link.inner & link.phrasing.attrs }
	link.phrasing.attrs =
		(	common.attrs.basic
		&	common.attrs.i18n
		&	common.attrs.present
		&	common.attrs.other
		&	common.attrs.microdata.itemprop
		&	common.attrs.microdata.itemref?
		&	common.attrs.microdata.itemscope?
		&	common.attrs.microdata.itemtype?
		&	common.attrs.microdata.itemid?
		&	shared-hyperlink.attrs.href
		&	shared-hyperlink.attrs.hreflang?
		&	shared-hyperlink.attrs.media?
		&	shared-hyperlink.attrs.type?
		&	link.attrs.sizes?
		#	link.attrs.title included in common.attrs
		&	(	common.attrs.aria.role.link
			|	common.attrs.aria.role.presentation
			|	common.attrs.aria.role.menuitem
			)?
		)
	common.elem.phrasing |= link.elem.phrasing

## <link> element in head, extensions

link.attrs.rel |= common.attrs.microdata.itemprop
link.attrs &= common.attrs.microdata.itemref?
link.attrs &= common.attrs.microdata.itemscope?
link.attrs &= common.attrs.microdata.itemtype?
link.attrs &= common.attrs.microdata.itemid?

## Property Metadata: <meta itemprop>

	meta.itemprop.elem =
		element meta { meta.inner & meta.itemprop.attrs }
	meta.itemprop.attrs =
		(	common.attrs.basic
		&	common.attrs.i18n
		&	common.attrs.present
		&	common.attrs.other
		&	common.attrs.microdata.itemprop
		&	common.attrs.microdata.itemref?
		&	common.attrs.microdata.itemscope?
		&	common.attrs.microdata.itemtype?
		&	common.attrs.microdata.itemid?
		&	meta.itemprop.attrs.content
		&	(	common.attrs.aria.role.presentation
			|	common.attrs.aria.role.menuitem
			)?
		)
		meta.itemprop.attrs.content =
			attribute content {
				string
			}
	common.elem.metadata |= meta.itemprop.elem
	common.elem.phrasing |= meta.itemprop.elem