-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathaosl.xsd
2004 lines (1544 loc) · 59.9 KB
/
aosl.xsd
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8" ?>
<!--
AOSL : Art Of Sequence Language
Describe a digital sequence.
More infos : http://artofsequence.org
Licence : M.I.T.
http://www.opensource.org/licenses/mit-license.php
Read the "documentation" tags for comments on object, attributes and types.
-->
<xs:schema xmlns:aos="artofsequence.org/aosl/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="artofsequence.org/aosl/1.0"
version="1.0"
>
<xs:element name="sequence" type="aos:sequence" abstract="false" nillable="false">
<xs:annotation>
<xs:documentation>
The root element for a Sequence.
In a full AOSL file, this should be the only root object.
</xs:documentation>
</xs:annotation>
</xs:element>
<!--##### Basic types #############################################################-->
<xs:simpleType name="unit_space" >
<xs:annotation>
<xs:documentation>Type for graphic space units.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double" />
</xs:simpleType>
<xs:simpleType name="unit_time">
<xs:annotation>
<xs:documentation>Time value in seconds.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double" />
</xs:simpleType>
<xs:simpleType name="unit_stream" >
<xs:annotation>
<xs:documentation>
Type of value defining a point or a length in the stream.
Might be a percentile value of the whole stream or an absolute time in seconds.
</xs:documentation>
</xs:annotation>
<xs:union memberTypes="aos:unit_time aos:value_percent" />
</xs:simpleType>
<xs:simpleType name="value_percent" >
<xs:annotation>
<xs:documentation>Relative percentile value.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="\d(.\d*)*%" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="angle" >
<xs:annotation>
<xs:documentation>
Type for angles values, in Radian.
Positive value is counter-clock-wise, negative is clock-wise,
like on the trigonometric circle.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:double" />
</xs:simpleType>
<xs:complexType name="vector" >
<xs:annotation>
<xs:documentation>Vector of space units used for spatial representations.</xs:documentation>
</xs:annotation>
<xs:attribute name="x" type="aos:unit_space" default="0.0" />
<xs:attribute name="y" type="aos:unit_space" default="0.0" />
<xs:attribute name="z" type="aos:unit_space" default="0.0" />
</xs:complexType>
<xs:complexType name="rotation" >
<xs:annotation>
<xs:documentation>Rotation representation.</xs:documentation>
</xs:annotation>
<xs:attribute name="yaw" type="aos:angle" default="0.0">
<xs:annotation>
<xs:documentation>Rotation angle aroun the x-axis.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="pitch" type="aos:angle" default="0.0">
<xs:annotation>
<xs:documentation>Rotation angle aroun the y-axis.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="roll" type="aos:angle" default="0.0">
<xs:annotation>
<xs:documentation>Rotation angle aroun the z-axis.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="transformation">
<xs:annotation>
<xs:documentation>
Geometric transformation in graphic space.
A transformation can be used both for positionnement in space and for movement.
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="translation" type="aos:vector" minOccurs="0" maxOccurs="1" >
<xs:annotation>
<xs:documentation>Translation to apply to the object position.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="scale" type="aos:vector" minOccurs="0" maxOccurs="1" >
<xs:annotation>
<xs:documentation>Scale to apply to the object's size.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="rotation" type="aos:rotation" minOccurs="0" maxOccurs="1" >
<xs:annotation>
<xs:documentation>Rotation to apply to the object's orientation, relative to it's the center.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="origin" type="aos:vector" minOccurs="0" maxOccurs="1" >
<xs:annotation>
<xs:documentation>Center point in object space to used to apply rotation.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="box">
<xs:annotation>
<xs:documentation>Spatial representation of a box.</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="size" type="aos:vector" minOccurs="0" >
<xs:annotation>
<xs:documentation>
Size of the box.
Each one of the axes value gives the length of the corresponding edges of the box.
If not provided, the default size should be determined by the implementation.
In this case, if it is the ouput or input box of a graphic object, the default value is 100% of the resource size.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="transformation" type="aos:transformation" minOccurs="0" >
<xs:annotation>
<xs:documentation>
Transformation defining the position, orientation and scale factor of this box,
relative to the parent object or the canvas origin if no parent.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="spatial_area">
<xs:annotation>
<xs:documentation>
Configuration of a finite graphic space area.
The size given for each dimension is used to determine what's to be managed
in the space box. If it's a graphical space, it determines the view frustum.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="aos:vector">
<xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="source_uri">
<xs:annotation>
<xs:documentation>URI of a resource: local file, http accessed file, etc.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:anyURI" />
</xs:simpleType>
<xs:complexType name="extension" mixed="true" >
<xs:annotation>
<xs:documentation>Free node that allow for extension to add interpreter-specific informations or new non-standard language features.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:anyAttribute />
</xs:complexType>
<xs:simpleType name="name">
<xs:annotation>
<xs:documentation>Type for allowed names' syntax.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="([a-zA-Z0-9_-])+" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="email">
<xs:annotation>
<xs:documentation>Valid email adress.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="version">
<xs:annotation>
<xs:documentation>Valid version name</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="([a-zA-Z0-9_-])+" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="property" mixed="true" final="#all" >
<xs:annotation>
<xs:documentation>
Properties are key/value informations that can be organized in tree structures.
The value is the content of the element.
They are used to embedd hierarchical custom data in objects.
Properties can contain a value and other properties.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="property" type="aos:property" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A child property of this property.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="aos:name" use="required">
<xs:annotation>
<xs:documentation>Name of this property instance.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="controller" final="#all" >
<xs:annotation>
<xs:documentation>Specification of the source of control of an object.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string" >
<xs:enumeration value="user">
<xs:annotation>
<xs:documentation>The player's user will control the object. </xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="none">
<xs:annotation>
<xs:documentation>No control will be given.</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="activation" final="#all" >
<xs:annotation>
<xs:documentation>Define what should happen when an object get activated.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string" >
<xs:enumeration value="reset">
<xs:annotation>
<xs:documentation>The object should reset to it's original state before activation.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="continue">
<xs:annotation>
<xs:documentation>The object should continue with it's current/last state on activation.</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="script" mixed="true" >
<xs:annotation>
<xs:documentation>
A script is a program that will be executed while the sequence is being played, when the script's owner get activated.
No specific language is required but if the player don't know the script's language it
will simply ignore it. That make scripts mostly player-specific.
That said, choice of a default language might occur in a future version of this language.
</xs:documentation>
</xs:annotation>
<xs:attribute name="lang" type="aos:name" use="required" >
<xs:annotation>
<xs:documentation>
Identifier of the programming language used.
If the player don't recognize this identifier, it should ignore the whole script.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="activation" type="aos:activation" default="reset">
<xs:annotation>
<xs:documentation>
Define what should happen when an object get activated :
- reset : all the script's environnement and variables will be reset to their initial values;
- continue : the script's environnement will be saved
and the execution process be paused on deactivation and resumed on future activation;
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="loop" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>
A looping script will execute it's code to the end then come back to the first instruction,
with only the interval time between each whole script execution and without resetting the execution state.
Looping allow a script to be executed on a regular time frequency, making it non-blocking for the player.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="interval" type="aos:unit_time" default="0">
<xs:annotation>
<xs:documentation>
Time interval between each script execution.
This interval will be used only if the script is looping.
The first execution don't take account of the interval and should be immediate
on script activation.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="source" type="xs:anyURI" use="optional">
<xs:annotation>
<xs:documentation>
URI to a file containing the source code of the script.
The source code will be inserted before any source code written directly in this script element.
Therefore, if this script element don't have inner code but just a source,
only the source script code will be the executed.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="special_color">
<xs:annotation>
<xs:documentation>
Named colors (defined in standard CSS).
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="aqua" />
<xs:enumeration value="black" />
<xs:enumeration value="blue" />
<xs:enumeration value="fuchsia" />
<xs:enumeration value="gray" />
<xs:enumeration value="grey" />
<xs:enumeration value="green" />
<xs:enumeration value="lime" />
<xs:enumeration value="maroon" />
<xs:enumeration value="navy" />
<xs:enumeration value="olive" />
<xs:enumeration value="purple" />
<xs:enumeration value="red" />
<xs:enumeration value="silver" />
<xs:enumeration value="teal" />
<xs:enumeration value="white" />
<xs:enumeration value="yellow" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="color_value" >
<xs:annotation>
<xs:documentation>
Hexadecimal value of a color.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="#[0-9A-Fa-f]{6}" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="color" >
<xs:annotation>
<xs:documentation>
Color value, as hexadecimal or named.
</xs:documentation>
</xs:annotation>
<xs:union memberTypes="aos:special_color aos:color_value" />
</xs:simpleType>
<!--##### Root Elements #############################################################-->
<xs:complexType name="sequence" final="#all" >
<xs:annotation>
<xs:documentation>
Root object representing a sequence.
It hold everything that is required to describe the full sequence interpreted by the player.
</xs:documentation>
</xs:annotation>
<xs:all minOccurs="1">
<xs:element name="meta" type="aos:meta" minOccurs="0" >
<xs:annotation>
<xs:documentation>Additional informations about the sequence.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="library" type="aos:library" >
<xs:annotation>
<xs:documentation>Library of resources used in this sequence.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="canvas" type="aos:canvas" >
<xs:annotation>
<xs:documentation>Canvas where the sequence plays and that gives the objects' organisation.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="story" type="aos:story" >
<xs:annotation>
<xs:documentation>Description of the structure of the sequence.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
<xs:attribute name="name" type="xs:string" use="required" >
<xs:annotation>
<xs:documentation>
Name of the Sequence.
Can be used as a default title by the player.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="aos:unique_id" use="required" >
<xs:annotation>
<xs:documentation>
Identifier of the Sequence.
Used by tools manipulating AOSL files to identify them.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="meta" final="#all" >
<xs:annotation>
<xs:documentation>Additional informations about the sequence.</xs:documentation>
</xs:annotation>
<xs:all minOccurs="0">
<xs:element name="version" type="aos:version" minOccurs="0">
<xs:annotation>
<xs:documentation>
Version name of the Sequence.
The format of the versionning scheme is free.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="authors" minOccurs="0">
<xs:annotation>
<xs:documentation>Informations about the authors of the sequence.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="author" type="aos:author" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="description" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Description of the sequence's content.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="website" type="xs:anyURI" minOccurs="0">
<xs:annotation>
<xs:documentation>Website associated with this sequence.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="licence" type="xs:string" minOccurs="0" >
<xs:annotation>
<xs:documentation>Licence of the sequence.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="targets" minOccurs="0">
<xs:annotation>
<xs:documentation>Informations about the players originally targetted for this sequence and configuration data.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="target" type="aos:target" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="infos" type="aos:extension" minOccurs="0" >
<xs:annotation>
<xs:documentation>Additional informations.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="library" final="#all" >
<xs:annotation>
<xs:documentation>The Library contain informations about a set of Resources that can be used in a Sequence.</xs:documentation>
</xs:annotation>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="include" type="aos:library_include" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
External libraries to import.
Importing a library means getting the resources of the target library and
putting them in this one.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="resource" type="aos:resource" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
Resource to load to play this Sequence.
Referenced by one or more objects.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="canvas" final="#all" >
<xs:annotation>
<xs:documentation>
Canvas where the sequence plays and that gives the objects' organisation.
The Canvas is a 3D graphical and audio space.
The depth dimension can be ignored by authors to focus on 2D but should still be
managed by players in a way or another to allow authors to exploit it where needed.
</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="area" type="aos:spatial_area" minOccurs="1" >
<xs:annotation>
<xs:documentation>
Virtual dimensions of the canvas.
Each coordinate will be interpreted as the space to take on each axis, x and y being the surface of the screen.
The coordinate system is right-handed, like in OpenGL.
The origin of the canvas space is in bottom-left of the screen, so +x goes on the right, +y goes up.
The x and y informations will also allow the interpreter to understand:
- the original screen ratio for the sequence
- the original screen resolution the sequence targeted
Those informations will allow the player implementation to adapt the sequence to the
display in a more informed way.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="layers" minOccurs="0" >
<xs:annotation>
<xs:documentation>Layers available in this canvas.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded" >
<xs:element name="layer" type="aos:layer" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="objects" type="aos:object_list" minOccurs="1">
<xs:annotation>
<xs:documentation>Objects in this canvas, organized in hierarchical tree.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
<xs:attribute name="color" type="aos:color" default="black" >
<xs:annotation>
<xs:documentation>
Color used to fill the canvas (background color).
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="story" final="#all" >
<xs:annotation>
<xs:documentation>
The Story describe the structure of the sequence : the relation between the different stages of the sequence.
It's made of Stages connected by Moves, describing what should happens when we get from one Stage to another.
</xs:documentation>
</xs:annotation>
<xs:all minOccurs="1" >
<xs:element name="properties" type="aos:property" minOccurs="0">
<xs:annotation>
<xs:documentation>
Initial custom properties available through the playing of this Sequence.
Those properties are available to all scripts and can be used by the interpreter too.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="navigation" type="aos:navigation" minOccurs="0" >
<xs:annotation>
<xs:documentation>Navigation configuration used for the whole sequence. Can be overloaded at each Stage of the Sequence.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="stages" >
<xs:annotation>
<xs:documentation>Stages of this Sequence.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="stage" type="aos:stage" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="moves" >
<xs:annotation>
<xs:documentation>Moves, containing Changes between Stages.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded" >
<xs:element name="move" type="aos:move" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="begin" type="aos:stage_ref" use="required" >
<xs:annotation>
<xs:documentation>The Stage to begin the Sequence with.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!--##### Meta Elements #############################################################-->
<xs:complexType name="author">
<xs:annotation>
<xs:documentation>Informations about an author.</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="name" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Name of the author.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="about" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Description of the author and/or what he/she did in the sequence.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="comments" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Comments from the author.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="website" type="xs:anyURI" minOccurs="0">
<xs:annotation>
<xs:documentation>Website of the author.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="email" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Email of the author.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="infos" type="aos:extension" minOccurs="0">
<xs:annotation>
<xs:documentation>Additional arbitrary informations about the author.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
<xs:complexType name="target">
<xs:annotation>
<xs:documentation>Informations about the target player/interpreter and platform.</xs:documentation>
</xs:annotation>
<xs:all>
<xs:element name="config" type="aos:extension" minOccurs="0">
<xs:annotation>
<xs:documentation>
Target-specific configuration informations.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
<xs:attribute name="player" type="xs:string" >
<xs:annotation>
<xs:documentation>
Name identifiying the player/interpreter that this sequence is made for.
Other players can read it too but somme player-specific extensions
will simply be ignored if the interpreter don't implement them.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="platform" type="xs:string" >
<xs:annotation>
<xs:documentation>
Name identifiying the platform that this sequence is made for.
This is to clearly make the difference between a player being available on
different platforms and performing differently while bieing having the same code/binary.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="website" type="xs:anyURI" use="optional">
<xs:annotation>
<xs:documentation>Website of the target provider.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!--##### Library Objects #############################################################-->
<xs:simpleType name="resource_type">
<xs:annotation>
<xs:documentation>Type of resource, used to help the player/interpreter and tools to identify the way to use the resource.</xs:documentation>
</xs:annotation>
<xs:union memberTypes="aos:resource_type_generic aos:resource_type_specific" />
</xs:simpleType>
<xs:simpleType name="resource_type_generic">
<xs:annotation>
<xs:documentation>
Predefined generic type of resources that "should" be implemented by any player.
As generic types, they only describe a general model to manage the associated resource.
For some resources, a more specific resource type might be necessary to help the player
interpret more correctly the resource data.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="image" >
<xs:annotation>
<xs:documentation>A static graphic image (no interaction, only graphics).</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="audio" >
<xs:annotation>
<xs:documentation>An audio stream resource.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="video" >
<xs:annotation>
<xs:documentation>An audio-visual stream resource.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="software" >
<xs:annotation>
<xs:documentation>An interactive application top embedd.</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="resource_type_specific">
<xs:annotation>
<xs:documentation>
Interpreter-specific types of resources.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[!]([a-zA-Z0-9_-])+" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="resource">
<xs:annotation>
<xs:documentation>
A Resource provide the address of a file or stream that contain the data to be used in the Sequence.
Each Object can be bound to a resource, using it as source data from wich a transformed interpretation (Objects) can be extracted from.
</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="aos:source_uri" >
<xs:attribute name="id" type="aos:resource_id" use="required" >
<xs:annotation>
<xs:documentation>Identifier of the resource.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" type="aos:resource_type" use="required" >
<xs:annotation>
<xs:documentation>Type of the resource, automatically guessed by the interpreter by default.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="library_include">
<xs:annotation>
<xs:documentation>
Include an external librarie's resources.
Including another library means importing each of it's Resources inside this library.
</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:annotation>
<xs:documentation>URI where is located the file containing the external Library informations.</xs:documentation>
</xs:annotation>
<xs:extension base="aos:source_uri" />
</xs:simpleContent>
</xs:complexType>
<!--##### Canvas Elements #############################################################-->
<xs:complexType name="layer" final="#all" >
<xs:annotation>
<xs:documentation>
A Layer is a way to activate and deactivate a group of unrelated objects.
It is orthogonal to the hierarchical organisation of Objects.
An object bound to a layer will be active when both it's parent object and the layer are active,
but will be inactive if any one of them is deactivated.
It can be used for localization (one layer per language with texts in it).
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="extension" type="aos:extension" minOccurs="0" maxOccurs="1" />
<xs:element name="object" type="aos:object_ref_element" minOccurs="0" maxOccurs="unbounded" >
<xs:annotation>
<xs:documentation>
Reference to an object to be part of this layer.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="aos:layer_id" use="required" >
<xs:annotation>
<xs:documentation>Id of the Layer, to be used by Objects that are bound to it.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="active" type="xs:boolean" default="true" use="optional" >
<xs:annotation>
<xs:documentation>
Is this Layer active or unactive?
When active all the bound Objects will be active if their parent is active too.
When unactive all the bound Objects will be unactive, without considering the parent's state.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<!--############## Object's components. ###########################"-->
<xs:complexType name="properties_stream_object">
<xs:annotation>
<xs:documentation>
Stream Object representation. Properties for objects with streaming behaviour.
</xs:documentation>
</xs:annotation>
<xs:attribute name="begin" type="aos:unit_stream" default="0%" >
<xs:annotation>
<xs:documentation>
Begin position in the stream source.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="end" type="aos:unit_stream" default="100%" >
<xs:annotation>
<xs:documentation>