2024-04-26 21:22:36 +02:00
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
|
|
|
2024-04-26 22:05:16 +02:00
|
|
|
<!-- Valeur contenu par une substitution -->
|
|
|
|
<xs:simpleType name="Element">
|
|
|
|
<xs:restriction base="xs:string">
|
|
|
|
<xs:pattern value="[A-Z]+" />
|
|
|
|
</xs:restriction>
|
|
|
|
</xs:simpleType>
|
|
|
|
|
|
|
|
<!-- Valeur contenu par une substitution -->
|
|
|
|
<xs:simpleType name="SubElement">
|
|
|
|
<xs:restriction base="xs:string">
|
|
|
|
<xs:pattern value="[A-Z|\[|\]]+" />
|
|
|
|
</xs:restriction>
|
|
|
|
</xs:simpleType>
|
|
|
|
|
|
|
|
<xs:complexType name="Substitution">
|
|
|
|
<xs:simpleContent>
|
|
|
|
<xs:extension base="SubElement">
|
|
|
|
<xs:attribute name="member" use="required">
|
|
|
|
<!-- Membre d'une substitution -->
|
|
|
|
<xs:simpleType>
|
|
|
|
<xs:restriction base="xs:string">
|
|
|
|
<xs:pattern value="[A-Z]{1}" />
|
|
|
|
</xs:restriction>
|
|
|
|
</xs:simpleType>
|
|
|
|
</xs:attribute>
|
|
|
|
</xs:extension>
|
|
|
|
</xs:simpleContent>
|
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<!-- Valeur contenu par une interprétation -->
|
|
|
|
<xs:simpleType name="InterpElement">
|
|
|
|
<xs:restriction base="xs:string">
|
|
|
|
<xs:pattern value="(LINE) \d+|(MOVE) \d+|(TURN) -?\d+|(RE)?(STORE)" />
|
|
|
|
</xs:restriction>
|
|
|
|
</xs:simpleType>
|
|
|
|
|
|
|
|
|
|
|
|
<xs:complexType name="Interpretation">
|
|
|
|
<xs:simpleContent>
|
|
|
|
<xs:extension base="InterpElement">
|
|
|
|
<xs:attribute name="member" use="required">
|
|
|
|
<!-- Membre d'une interprétation -->
|
|
|
|
<xs:simpleType>
|
|
|
|
<xs:restriction base="xs:string">
|
|
|
|
<xs:pattern value="[A-Z|\[|\]]{1}" />
|
|
|
|
</xs:restriction>
|
|
|
|
</xs:simpleType>
|
|
|
|
</xs:attribute>
|
|
|
|
</xs:extension>
|
|
|
|
</xs:simpleContent>
|
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
|
|
|
|
<xs:complexType name="Substitutions">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="substitution" type="Substitution" maxOccurs="unbounded" />
|
|
|
|
</xs:sequence>
|
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="Interpretations">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="interpretation" type="Interpretation" maxOccurs="unbounded" />
|
|
|
|
</xs:sequence>
|
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="Lsystem">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="name" type="xs:string" />
|
2024-04-26 22:08:55 +02:00
|
|
|
<!-- TODO: On peut utiliser [a-z|\d] mais c'est peut-être
|
|
|
|
trop restrictif ? -->
|
|
|
|
|
2024-04-26 22:05:16 +02:00
|
|
|
<xs:element name="base" type="Element" />
|
|
|
|
<xs:element name="axiom" type="Element" />
|
|
|
|
<xs:element name="substitutions" type="Substitutions" />
|
|
|
|
<xs:element name="interpretations" type="Interpretations" />
|
|
|
|
</xs:sequence>
|
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:element name="lsystems">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="lsystem" type="Lsystem" maxOccurs="unbounded" />
|
|
|
|
</xs:sequence>
|
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
2024-04-26 21:22:36 +02:00
|
|
|
|
|
|
|
</xs:schema>
|