default namespace = "xri://$xrd*($v*2.0)" namespace xrd = "xri://$xrd*($v*2.0)" namespace saml = "urn:oasis:names:tc:SAML:2.0:assertion" namespace ds = "http://www.w3.org/2000/09/xmldsig#" namespace local = "" datatypes xs = "http://www.w3.org/2001/XMLSchema-datatypes" start = XRD anyelementbody = (attribute * {text} | text | element * {anyelementbody} )* non.xrd.element = element * - xrd:* { anyelementbody } other.attribute = attribute * - ( local:* | xrd:* ) { text } XRD = element XRD { other.attribute *, attribute idref { xs:IDREF } ?, attribute version { "2.0" } ?, XRDType *, Query ?, Status ?, ServerStatus ?, Expires ?, ProviderID ?, ( Redirect+ | Ref+ ) ?, LocalID *, EquivID *, CanonicalID ?, CanonicalEquivID ?, Service *, element saml:Assertion { anyelementbody } ?, non.xrd.element * } XRDType = element Type { other.attribute *, xs:anyURI } Query = element Query { other.attribute *, text } append.attribute = attribute append { "none" | "local" | "authority" | "path" | "query" | "qxri" } statuspattern = other.attribute *, attribute code { xs:integer }, attribute cid { "absent" | "off" | "verified" | "failed" } ?, attribute ceid { "absent" | "off" | "verified" | "failed" } ?, text Status = element Status { other.attribute *, attribute code { xs:integer }, attribute cid { "absent" | "off" | "verified" | "failed" } ?, attribute ceid { "absent" | "off" | "verified" | "failed" } ?, text } ServerStatus = element ServerStatus { other.attribute *, attribute code { xs:integer }, text } Expires = element Expires { other.attribute *, xs:dateTime } ProviderID = element ProviderID { other.attribute *, xs:anyURI } Redirect = element Redirect { other.attribute *, attribute priority { xs:integer }?, append.attribute ?, xs:anyURI } Ref = element Ref { other.attribute *, attribute priority { xs:integer }?, xs:anyURI } LocalID = element LocalID { other.attribute *, attribute priority { xs:integer } ?, xs:anyURI } EquivID = element EquivID { other.attribute *, attribute priority { xs:integer } ?, xs:anyURI } CanonicalID = element CanonicalID { other.attribute *, xs:anyURI } CanonicalEquivID = element CanonicalEquivID { other.attribute *, xs:anyURI } Service = element Service { other.attribute *, attribute priority { xs:integer }?, ProviderID?, ServiceType *, Path *, MediaType *, ( URI+ | Redirect+ | Ref+ )?, LocalID *, element ds:KeyInfo { anyelementbody }?, non.xrd.element * } URI = element URI { other.attribute *, attribute priority { xs:integer }?, append.attribute ?, xs:anyURI } selection.attributes = attribute match { "any" | "default" | "non-null" | "null" } ?, attribute select { xs:boolean } ? ServiceType = element Type { other.attribute *, selection.attributes, xs:anyURI } Path = element Path { other.attribute *, selection.attributes, xs:string } MediaType = element MediaType { other.attribute *, selection.attributes, xs:string }