diff options
Diffstat (limited to 'schemas/lost1.xsd')
-rw-r--r-- | schemas/lost1.xsd | 311 |
1 files changed, 311 insertions, 0 deletions
diff --git a/schemas/lost1.xsd b/schemas/lost1.xsd new file mode 100644 index 0000000..353063a --- /dev/null +++ b/schemas/lost1.xsd @@ -0,0 +1,311 @@ +default namespace ns1 = "urn:ietf:params:xml:ns:lost1" + + +## +## Location-to-Service Translation Protocol (LoST) +## +## A LoST XML instance has three request types, each with +## a cooresponding response type: find service, list services, +## and get service boundary. +## +start = + findService + | listServices + | listServicesByLocation + | getServiceBoundary + | findServiceResponse + | listServicesResponse + | listServicesByLocationResponse + | getServiceBoundaryResponse + | errors + | redirect + +## +## The queries. +## +div { + findService = + element findService { + requestLocation, + commonRequestPattern, + attribute validateLocation { + xsd:boolean >> a:defaultValue [ "false" ] + }?, + attribute serviceBoundary { + ("reference" | "value") >> a:defaultValue [ "reference" ] + }?, + attribute recursive { xsd:boolean >> a:defaultValue [ "false" ] }? + } + listServices = element listServices { commonRequestPattern } + listServicesByLocation = + element listServicesByLocation { + requestLocation, + commonRequestPattern, + attribute recursive { xsd:boolean >> a:defaultValue [ "true" ] }? + } + getServiceBoundary = + element getServiceBoundary { serviceBoundaryKey, extensionPoint } +} + +## +## The responses. +## +div { + findServiceResponse = + element findServiceResponse { + mapping+, locationValidation?, commonResponsePattern, locationUsed + } + listServicesResponse = + element listServicesResponse { serviceList, commonResponsePattern } + listServicesByLocationResponse = + element listServicesByLocationResponse { + serviceList, commonResponsePattern, locationUsed + } + getServiceBoundaryResponse = + element getServiceBoundaryResponse { + serviceBoundary, commonResponsePattern + } +} + +## +## A pattern common to some of the queries. +## +div { + commonRequestPattern = service, path?, extensionPoint +} + +## +## A pattern common to responses. +## +div { + commonResponsePattern = warnings*, path, extensionPoint +} + +## +## Location in Requests +## +div { + requestLocation = + element location { + attribute id { xsd:token }, + locationInformation + }+ +} + +## +## Location Information +## +div { + locationInformation = + extensionPoint+, + attribute profile { xsd:NMTOKEN }? +} + +## +## Service Boundary +## +div { + serviceBoundary = element serviceBoundary { locationInformation }+ +} + +## +## Service Boundary Reference +## +div { + serviceBoundaryReference = + element serviceBoundaryReference { + source, serviceBoundaryKey, extensionPoint + } + serviceBoundaryKey = attribute key { xsd:token } +} + +## +## Path - +## Contains a list of via elements - +## places through which information flowed +## +div { + path = + element path { + element via { source, extensionPoint }+ + } +} + +## +## Location Used +## +div { + locationUsed = + element locationUsed { + attribute id { xsd:token } + }? +} + +## +## Expires pattern +## +div { + expires = + attribute expires { xsd:dateTime | "NO-CACHE" | "NO-EXPIRATION" } +} + +## +## A QName list +## +div { + qnameList = list { xsd:QName* } +} + +## +## A location-to-service mapping. +## +div { + mapping = + element mapping { + element displayName { + xsd:string, + attribute xml:lang { xsd:language } + }*, + service, + (serviceBoundary | serviceBoundaryReference)?, + element uri { xsd:anyURI }*, + element serviceNumber { + xsd:token { pattern = "[0-9*#]+" } + }?, + extensionPoint, + expires, + attribute lastUpdated { xsd:dateTime }, + source, + attribute sourceId { xsd:token }, + message + } +} + +## +## Location validation +## +div { + locationValidation = + element locationValidation { + element valid { qnameList }?, + element invalid { qnameList }?, + element unchecked { qnameList }?, + extensionPoint + } +} + +## +## Errors and Warnings Container. +## +div { + exceptionContainer = + (badRequest? + & internalError? + & serviceSubstitution? + & defaultMappingReturned? + & forbidden? + & notFound? + & loop? + & serviceNotImplemented? + & serverTimeout? + & serverError? + & locationInvalid? + & locationProfileUnrecognized?), + extensionPoint, + source + errors = element errors { exceptionContainer } + warnings = element warnings { exceptionContainer } +} + +## +## Basic Exceptions +## +div { + + ## + ## Exception pattern. + ## + basicException = message, extensionPoint + badRequest = element badRequest { basicException } + internalError = element internalError { basicException } + serviceSubstitution = element serviceSubstitution { basicException } + defaultMappingReturned = + element defaultMappingReturned { basicException } + forbidden = element forbidden { basicException } + notFound = element notFound { basicException } + loop = element loop { basicException } + serviceNotImplemented = + element serviceNotImplemented { basicException } + serverTimeout = element serverTimeout { basicException } + serverError = element serverError { basicException } + locationInvalid = element locationInvalid { basicException } + locationValidationUnavailable = + element locationValidationUnavailable { basicException } + locationProfileUnrecognized = + element locationProfileUnrecognized { + attribute unsupportedProfiles { xsd:NMTOKENS }, + basicException + } +} + +## +## Redirect. +## +div { + + ## + ## Redirect pattern + ## + redirect = + element redirect { + attribute target { appUniqueString }, + source, + message, + extensionPoint + } +} + +## +## Some common patterns. +## +div { + message = + (attribute message { xsd:token }, + attribute xml:lang { xsd:language })? + service = element service { xsd:anyURI }? + appUniqueString = + xsd:token { pattern = "([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]+" } + source = attribute source { appUniqueString } + serviceList = + element serviceList { + list { xsd:anyURI* } + } +} + +## +## Patterns for inclusion of elements from schemas in +## other namespaces. +## +div { + + ## + ## Any element not in the LoST namespace. + ## + notLost = element * - (ns1:* | ns1:*) { anyElement } + + ## + ## A wildcard pattern for including any element + ## from any other namespace. + ## + anyElement = + (element * { anyElement } + | attribute * { text } + | text)* + + ## + ## A point where future extensions + ## (elements from other namespaces) + ## can be added. + ## + extensionPoint = notLost* +}
\ No newline at end of file |