diff --git a/bonsai_scxml_engine/src/main/resources/scxml-schema/scxml.xsd b/bonsai_scxml_engine/src/main/resources/scxml-schema/scxml.xsd index 14b53128..145c645d 100644 --- a/bonsai_scxml_engine/src/main/resources/scxml-schema/scxml.xsd +++ b/bonsai_scxml_engine/src/main/resources/scxml-schema/scxml.xsd @@ -252,10 +252,17 @@ <!-- state --> <xsd:attributeGroup name="scxml.state.attlist"> <xsd:attribute name="id" type="bonsai.scxml.id"/> + <xsd:attribute name="src" type="bonsai.scxml.id"/> <xsd:attribute name="initial" type="xsd:IDREFS"/> <xsd:attributeGroup ref="scxml.extra.attribs"/> </xsd:attributeGroup> + <xsd:simpleType name="bonsai.scxml.id.nuq" id="ID.nuq"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="^#?( [a-zA-Z_$][a-zA-Z\d_$]*.)*[a-zA-Z_$][a-zA-Z\d_$]*" id="NCName.pattern.nuq"> + </xsd:pattern> + </xsd:restriction> + </xsd:simpleType> <xsd:simpleType name="bonsai.scxml.id" id="ID"> <xsd:restriction base="bonsai.scxml.NCNAME"/> @@ -263,7 +270,7 @@ <xsd:simpleType name="bonsai.scxml.NCNAME" id="NCName"> <xsd:restriction base="xsd:Name"> - <xsd:pattern value="([a-zA-Z_$][a-zA-Z\d_$]*\.)*[a-zA-Z_$][a-zA-Z\d_$]*" id="NCName.pattern"> + <xsd:pattern value="^#?( [a-zA-Z_$][a-zA-Z\d_$]*.)*[a-zA-Z_$][a-zA-Z\d_$]*" id="NCName.pattern"> </xsd:pattern> </xsd:restriction> </xsd:simpleType> @@ -318,6 +325,7 @@ <xsd:group name="scxml.onentry.content"> <xsd:sequence> <xsd:group maxOccurs="unbounded" minOccurs="0" ref="scxml.core.executablecontent"/> + <xsd:element name="assign" type="scxml.assign.type"/> </xsd:sequence> </xsd:group> <xsd:complexType name="scxml.onentry.type"> @@ -325,6 +333,7 @@ <xsd:attributeGroup ref="scxml.onentry.attlist"/> </xsd:complexType> <xsd:element name="onentry" type="scxml.onentry.type"/> + <!-- onexit --> <xsd:attributeGroup name="scxml.onexit.attlist"> <xsd:attributeGroup ref="scxml.extra.attribs"/> @@ -603,7 +612,7 @@ <xsd:element name="datamodel" type="scxml.datamodel.type"/> <!-- data --> <xsd:attributeGroup name="scxml.data.attlist"> - <xsd:attribute name="id" type="xsd:ID" use="required"/> + <xsd:attribute name="id" type="bonsai.scxml.id.nuq" use="required"/> <xsd:attribute name="src" type="URI.datatype"/> <xsd:attribute name="expr" type="ValueLang.datatype"/> <xsd:attributeGroup ref="scxml.extra.attribs"/> @@ -637,10 +646,12 @@ <xsd:element name="param" type="scxml.param.type"/> <!-- assign --> <xsd:attributeGroup name="scxml.assign.attlist"> - <xsd:attribute name="location" type="LocLang.datatype" use="required"/> + + <xsd:attribute name="location" type="LocLang.datatype"/> <xsd:attribute name="expr" type="ValueLang.datatype"/> <xsd:attribute default="replacechildren" name="type" type="AssignType.datatype"/> <xsd:attribute name="attr" type="xsd:NMTOKEN"/> + <xsd:attribute name="name" type="xsd:NCName"/> <xsd:attributeGroup ref="scxml.extra.attribs"/> </xsd:attributeGroup> <xsd:group name="scxml.assign.content">