Skip to content

Commit

Permalink
Initial checkin
Browse files Browse the repository at this point in the history
  • Loading branch information
ndw committed Jun 17, 2011
1 parent d13ebea commit c38f380
Show file tree
Hide file tree
Showing 13 changed files with 2,089 additions and 0 deletions.
84 changes: 84 additions & 0 deletions Config/rest.rnc
@@ -0,0 +1,84 @@
default namespace = "http://marklogic.com/appservices/rest"

start = Options

Options =
element options {
attribute user-params { "ignore" | "allow" | "forbid" }?,
Request*
}

Request =
element request {
attribute uri { text }?,
attribute endpoint { text }?,
attribute user-params { "ignore" | "allow" | "forbid" }?,
(UriParam | Param | Http | Condition)*
}

UriParam =
element uri-param {
attribute name { text },
attribute as { text }?,
text
}

Param =
element param {
attribute name { text },
attribute as { text }?,
attribute values { text }?,
attribute match { text }?,
attribute default { text }?,
attribute required { "true" | "false" }?,
attribute repeatable { "true" | "false" }?,
text
}

Http =
element http {
attribute method { text },
attribute user-params { "ignore" | "allow" | "forbid" }?,
(Param | Condition)*
}

Privilege =
element privilege { text }

Kind =
element kind { text }

Condition = Or | And | Function | Auth | Accept | UserAgent

Or =
element or {
Condition+
}

And =
element and {
Condition+
}

Auth =
element auth {
(Privilege+, Kind?)
}

Accept =
element accept {
text
}

UserAgent =
element user-agent {
text
}

Function =
element function {
attribute ns { xsd:anyURI },
attribute apply { xsd:QName },
attribute at { xsd:anyURI },
empty
}
123 changes: 123 additions & 0 deletions Config/rest.xsd
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://marklogic.com/appservices/rest" xmlns:rest="http://marklogic.com/appservices/rest">
<xs:element name="options">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="rest:request"/>
</xs:sequence>
<xs:attribute name="user-params">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="ignore"/>
<xs:enumeration value="allow"/>
<xs:enumeration value="forbid"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="request">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="rest:uri-param"/>
<xs:element ref="rest:param"/>
<xs:element ref="rest:http"/>
<xs:element ref="rest:Condition"/>
</xs:choice>
<xs:attribute name="uri"/>
<xs:attribute name="endpoint"/>
<xs:attribute name="user-params">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="ignore"/>
<xs:enumeration value="allow"/>
<xs:enumeration value="forbid"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="uri-param">
<xs:complexType mixed="true">
<xs:attribute name="name" use="required"/>
<xs:attribute name="as"/>
</xs:complexType>
</xs:element>
<xs:element name="param">
<xs:complexType mixed="true">
<xs:attribute name="name" use="required"/>
<xs:attribute name="as"/>
<xs:attribute name="values"/>
<xs:attribute name="match"/>
<xs:attribute name="default"/>
<xs:attribute name="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="repeatable">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="http">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="rest:param"/>
<xs:element ref="rest:Condition"/>
</xs:choice>
<xs:attribute name="method" use="required"/>
<xs:attribute name="user-params">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="ignore"/>
<xs:enumeration value="allow"/>
<xs:enumeration value="forbid"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="privilege" type="xs:string"/>
<xs:element name="kind" type="xs:string"/>
<xs:element name="Condition" abstract="true"/>
<xs:element name="or" substitutionGroup="rest:Condition">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="rest:Condition"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="and" substitutionGroup="rest:Condition">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="rest:Condition"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="auth" substitutionGroup="rest:Condition">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="rest:privilege"/>
<xs:element minOccurs="0" ref="rest:kind"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="accept" substitutionGroup="rest:Condition" type="xs:string"/>
<xs:element name="user-agent" substitutionGroup="rest:Condition" type="xs:string"/>
<xs:element name="function" substitutionGroup="rest:Condition">
<xs:complexType>
<xs:attribute name="ns" use="required" type="xs:anyURI"/>
<xs:attribute name="apply" use="required" type="xs:QName"/>
<xs:attribute name="at" use="required" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
</xs:schema>

0 comments on commit c38f380

Please sign in to comment.