Mercurial > pub > Impl
view _test/Resources/resources.xsd @ 250:129e48bb5afb
DOM refactoring
ObjectToDOM methods are virtual
QueryToDOM uses inflators
Fixed transform for the complex values in the ObjectToDOM
QueryToDOM doesn't allow to use complex values (HASHes) as values for nodes (overpost problem)
author | sergey |
---|---|
date | Wed, 07 Nov 2012 04:17:53 +0400 |
parents | b6cde007a175 |
children |
line wrap: on
line source
<?xml version="1.0" encoding="UTF-8"?> <schema targetNamespace="http://implab.org/schemas/resources" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://implab.org/schemas/resources"> <element name="resources"> <complexType> <sequence> <element name="root" type="tns:ResourceContract" /> <element name="contracts" minOccurs="0"> <complexType> <sequence> <element name="contract" maxOccurs="unbounded"> <complexType> <complexContent> <extension base="tns:ResourceContract"> <attribute name="id" type="string" /> <attribute name="modelType" type="tns:ClassName" /> </extension> </complexContent> </complexType> </element> </sequence> </complexType> </element> </sequence> </complexType> </element> <!-- abstract types --> <complexType name="AbstractBinding" abstract="true" /> <complexType name="AbstractTransformation" abstract="true" /> <complexType name="AbstractResult" abstract="true" /> <complexType name="ResourceContract"> <sequence> <group ref="tns:RestOperations" /> <element name="resource" maxOccurs="unbounded" minOccurs="0" type="tns:ChildResourceContract" /> </sequence> </complexType> <complexType name="ChildResourceContract"> <sequence> <choice> <element name="name" type="string" /> <element name="match"> <complexType> <simpleContent> <extension base="string"> <attribute name="vars" type="tns:VarList"/> </extension> </simpleContent> </complexType> </element> </choice> <group ref="tns:BindingExpressions"/> <choice> <element name="contract"> <complexType> <attribute name="ref" type="string" use="required" /> </complexType> </element> <sequence> <group ref="tns:RestOperations" /> <element name="resource" type="tns:ChildResourceContract" minOccurs="0" maxOccurs="unbounded" /> </sequence> </choice> </sequence> </complexType> <group name="RestOperations"> <sequence> <element name="get" type="tns:OperationContract" minOccurs="0" /> <element name="post" type="tns:OperationContract" minOccurs="0" /> <element name="put" type="tns:OperationContract" minOccurs="0" /> <element name="delete" type="tns:OperationContract" minOccurs="0" /> </sequence> </group> <group name="BindingExpressions"> <choice> <element name="bind" type="tns:Binding"/> <element name="transform" type="tns:Transformation"/> <element name="value" type="string" /> </choice> </group> <complexType name="OperationContract"> <sequence> <element name="bind" type="tns:Binding" /> <element name="response" minOccurs="0"> <complexType> <choice> <element name="redirect" type="tns:RedirectResponse" /> <element name="transform" type="tns:Transformation" /> </choice> </complexType> </element> </sequence> </complexType> <complexType name="Binding"> <sequence> <element name="var" type="tns:BindingVariable" minOccurs="0" maxOccurs="unbounded" /> </sequence> <attribute name="expr" type="string" use="required" /> <attribute name="handler" type="string" /> </complexType> <complexType name="BindingVariable"> <choice> <element name="bind" type="tns:Binding" /> <element name="transform" type="tns:Transformation" /> <element name="value" type="string" /> </choice> <attribute name="name" type="tns:IdentifierName" use="required" /> </complexType> <complexType name="Transformation"> <sequence> <element name="target" type="tns:Binding" minOccurs="0" /> <element name="transform" type="tns:Transformation" minOccurs="0" /> </sequence> <attribute name="class" type="tns:ClassName" use="required" /> </complexType> <complexType name="ResourceLocator"> <attribute name="locator" type="string" use="required" /> </complexType> <simpleType name="RedirectCodes"> <restriction base="string"> <enumeration value="moved-permanently" /> <enumeration value="temporary-redirect" /> <enumeration value="see-other" /> </restriction> </simpleType> <complexType name="RedirectResponse"> <complexContent> <extension base="tns:AbstractResult"> <sequence> <element name="location" type="tns:ResourceLocator" /> <element name="status" type="tns:RedirectCodes" minOccurs="0" /> </sequence> </extension> </complexContent> </complexType> <simpleType name="ClassName"> <restriction base="string"> <pattern value="\w+(::\w+)*" /> </restriction> </simpleType> <simpleType name="IdentifierName"> <restriction base="string"> <pattern value="\w+" /> </restriction> </simpleType> <simpleType name="VarList"> <restriction base="string"> <pattern value="(\w+)(\s*,\s*(\w+))*" /> </restriction> </simpleType> </schema>