Spring Engine Schema

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://bluestemsoftware.org/open/eoa/engine/spring/1.0" xmlns:tns="http://bluestemsoftware.org/open/eoa/engine/spring/1.0" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" elementFormDefault="qualified">
  <xs:element name="engine">
    <xs:annotation>
      <xs:documentation>Models a type specific instance of org.bluestemsoftware.specification.eoa.component.engine.rt.EngineRT. See class for additional documentation.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="configuration">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="features" minOccurs="0">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="feature" type="xs:anyURI" maxOccurs="unbounded" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="modules" minOccurs="0">
                <xs:complexType>
                  <xs:group ref="tns:tModule" maxOccurs="unbounded"/>
                </xs:complexType>
              </xs:element>
              <xs:group ref="tns:gBeans"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="partners" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="engineReference" minOccurs="1" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="serviceReference" minOccurs="0" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="endpointReference" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="operationReference" minOccurs="0" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="actionReference" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:group ref="tns:gPolicy" minOccurs="0" maxOccurs="unbounded" />
                                          </xs:sequence>
                                          <xs:attribute name="action" use="required" type="xs:anyURI" />
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:group ref="tns:gPolicy" minOccurs="0" maxOccurs="unbounded" />
                                    </xs:sequence>
                                    <xs:attribute name="operationName" use="required" type="xs:QName" />
                                  </xs:complexType>
                                </xs:element>
                                <xs:group ref="tns:gPolicy" minOccurs="0" maxOccurs="unbounded" />
                              </xs:sequence>
                              <xs:attribute name="endpointName" use="required" type="xs:NCName" />
                            </xs:complexType>
                          </xs:element>
                          <xs:group ref="tns:gPolicy" minOccurs="0" maxOccurs="unbounded" />
                        </xs:sequence>
                        <xs:attribute name="serviceName" use="required" type="xs:QName" />
                      </xs:complexType>
                      <xs:unique name="endpointName.name">
                        <xs:selector xpath="./tns:endpointReference" />
                        <xs:field xpath="@endpointName" />
                      </xs:unique>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="engineName" type="xs:QName" use="required" />
                </xs:complexType>
                <xs:unique name="serviceref.service.name">
                  <xs:selector xpath="./tns:serviceReference" />
                  <xs:field xpath="@serviceName" />
                </xs:unique>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="name" use="required" type="xs:QName" />
    </xs:complexType>
    <xs:unique name="engine.name">
      <xs:selector xpath="./tns:engineReference" />
      <xs:field xpath="@engineName" />
    </xs:unique>
  </xs:element>
  <xs:group name="tModule">
    <xs:sequence>
      <xs:element name="web">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="rootContext" type="xs:anyURI" />
          </xs:sequence>
          <xs:attribute name="ref" type="xs:anyURI" use="required" />
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="gPolicy">
    <xs:sequence>
      <xs:any namespace="http://www.w3.org/ns/ws-policy" processContents="lax" />
    </xs:sequence>
  </xs:group>
  <xs:group name="gBeans">
    <xs:sequence>
      <xs:any namespace="http://www.springframework.org/schema/beans" processContents="lax" />
    </xs:sequence>
  </xs:group>
</xs:schema>