summaryrefslogtreecommitdiffstats
path: root/test/schema/scxml.xsd
blob: ebc0654a73ac7970bc60770eefb4122192590ab3 (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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.w3.org/2005/07/scxml"
    xmlns="http://www.w3.org/2005/07/scxml"
    elementFormDefault="qualified">

	<xsd:annotation>
		<xsd:documentation>
			This is the XML Schema driver for SCXML 1.0.
			Please use this namespace for SCXML 1.0 elements:

			"http://www.w3.org/2005/07/scxml"

		</xsd:documentation>
		<xsd:documentation source="scxml-copyright.xsd"/>
	</xsd:annotation>
	<xsd:annotation>
		<xsd:documentation>
			This is the XML Schema driver file for SCXML 1.0.

			This schema:
			+ sets the namespace for SCXML 1.0
			+ imports external schemas (xml.xsd)
			+ imports SCXML common datatypes, attributes and content models
			+ imports modular schemas

        	SCXML 1.0 includes:
			+ SCXML core constructs
			+ SCXML executable content
			+ SCXML data model and manipulation
			+ SCXML external communications

			This schema is permissive such that it accomodates all
			datamodels, but validating documents may contain markup that
			is ignored in certain datamodels.
		</xsd:documentation>
	</xsd:annotation>

	<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
		<xsd:annotation>
			<xsd:documentation>
				This import brings in the XML namespace attributes
				The XML attributes are used by various modules.
			</xsd:documentation>
		</xsd:annotation>
	</xsd:import>

	<xsd:include schemaLocation="scxml-attribs.xsd">
		<xsd:annotation>
			<xsd:documentation>
				This includes brings in the common attributes for SCXML.
			</xsd:documentation>
		</xsd:annotation>
	</xsd:include>

	<xsd:include schemaLocation="scxml-contentmodels.xsd">
		<xsd:annotation>
			<xsd:documentation>
				This includes the common content models. 
		    </xsd:documentation>
		</xsd:annotation>
	</xsd:include>

	<xsd:include schemaLocation="scxml-datatypes.xsd">
		<xsd:annotation>
			<xsd:documentation>
				This includes brings in the common data types for SCXML.
		    </xsd:documentation>
		</xsd:annotation>
	</xsd:include>

	<xsd:redefine schemaLocation="scxml-module-data.xsd">
		<xsd:annotation>
			<xsd:documentation>
				This imports the data module for SCXML and redefines the following.
					[1] Redefines assign attribute group to allow type and attr
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attributeGroup name="scxml.assign.attlist">
			<xsd:attributeGroup ref="scxml.assign.attlist"/>
			<xsd:attribute name="type" type="AssignType.datatype" default="replacechildren"/>
			<xsd:attribute name="attr" type="xsd:NMTOKEN"/>
		</xsd:attributeGroup>
	</xsd:redefine>

	<xsd:include schemaLocation="scxml-module-script.xsd">
		<xsd:annotation>
			<xsd:documentation>
				This includes the script module for SCXML.
			</xsd:documentation>
		</xsd:annotation>
	</xsd:include>

	<xsd:redefine schemaLocation="scxml-module-external.xsd">
		<xsd:annotation>
			<xsd:documentation>
				This imports the external module for SCXML and redefines the following.
					[1] Redefines send and invoke mix group to allow 
						param
					[2] Redefines finalize mix group to allow: 
						executable content 
			</xsd:documentation>
		</xsd:annotation>
		<xsd:group name="scxml.send.mix">
			<xsd:choice>
				<xsd:group ref="scxml.send.mix"/>
				<xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:choice>
		</xsd:group>
		<xsd:group name="scxml.invoke.mix">
			<xsd:choice>
				<xsd:group ref="scxml.invoke.mix"/>
				<xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:choice>
		</xsd:group>
		<xsd:group name="scxml.finalize.mix">
			<xsd:choice>
				<xsd:group ref="scxml.finalize.mix"/>
				<xsd:group ref="scxml.core.executablecontent"/>
			</xsd:choice>
		</xsd:group>
	</xsd:redefine>

	<xsd:redefine schemaLocation="scxml-module-core.xsd">
		<xsd:annotation>
			<xsd:documentation>
				This imports the core module for SCXML and redefines the following.
					[1] Redefines executable content to allow 
						send, assign, validate, cancel and script elements
					[2] Redefines state and parallel mix group to allow 
						invoke and datamodel
					[3] Redefines scxml group to allow 
						datamodel and script
			    </xsd:documentation>
		</xsd:annotation>
		<xsd:group name="scxml.core.executablecontent">
			<xsd:choice>
				<xsd:group ref="scxml.core.executablecontent"/>
				<xsd:element ref="send"/>
				<xsd:element ref="assign"/>
				<xsd:element ref="script"/>
				<xsd:element ref="validate"/>
				<xsd:element ref="cancel"/>
			</xsd:choice>
		</xsd:group>
		<xsd:group name="scxml.scxml.mix">
			<xsd:choice>
				<xsd:group ref="scxml.scxml.mix"/>
				<xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/>
				<xsd:element ref="script" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:choice>
		</xsd:group>
		<xsd:group name="scxml.state.mix">
			<xsd:choice>
				<xsd:group ref="scxml.state.mix"/>
				<xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/>
				<xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:choice>
		</xsd:group>
		<xsd:group name="scxml.parallel.mix">
			<xsd:choice>
				<xsd:group ref="scxml.parallel.mix"/>
				<xsd:element ref="datamodel" minOccurs="0" maxOccurs="unbounded"/>
				<xsd:element ref="invoke" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:choice>
		</xsd:group>
		<xsd:group name="scxml.donedata.content">
			<xsd:choice>
				<xsd:group ref="scxml.donedata.content"/>
				<xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:choice>
		</xsd:group>

	</xsd:redefine>

</xsd:schema>