[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [xri] RelaxNG schemas for XRI resolution
Gabe, you’re right, our decision was
to make XRD attributes unqualified. We didn’t explicitly make that
decision about XRDS attributes, but I agree it should hold there too. I just made that fix in ED07. I’m also fine with making RelaxNG
the normative schema definition, too. Anyone who is NOT okay with this, please
speak up now or forever hold your peace. =Drummond From: Gabe Wachob
[mailto:gabe.wachob@amsoft.net] I went ahead and threw together two RelaxNG schemas (one for
XRDS, one for XRD). Please check carefully – this is a very rough cut and
I had to guess at element ordering in many places. I note that in the document, there are a lot of places where
attributes are referred to by qualified name – I missed in this in my
last review, but I believe the XML schema and our decision was to make them *unqualified* - so in section 4.1, you
wouldn’t use @xrds:ref, you’d simply use @ref Anyway here’s the two schemas cut n pasted in: xrds.rnc namespace xrds = "xrd://$xrds" datatypes xs =
"http://www.w3.org/2001/XMLSchema-datatypes" anyelement = element * { (attribute * { text } | text | anyelement)* } start = element xrds:XRDS { attribute ref { xs:anyURI }, anyelement * } xrd.rnc default namespace = "xrd://$xrd*($v*2.0)" namespace xrd = "xrd://$xrd*($v*2.0)" namespace saml =
"urn:oasis:names:tc:SAML:2.0:assertion" namespace ds =
"http://www.w3.org/2000/09/xmldsig#" datatypes xs =
"http://www.w3.org/2001/XMLSchema-datatypes" datatypes rd =
"http://relaxng.org/ns/compatibility/datatypes/1.0" start=XRD anyelementbody = (attribute * {text} | text | element * {anyelementbody} )* non.xrd.element = element * - xrd:* { anyelementbody } non.xrd.attribute = attribute * - xrd:* {text} # XRD Element # XXX Need to check order of the following XRD=element XRD { attribute
xml:id {rd:ID} ?, attribute
idref {rd:IDREF} ?, attribute
version { "2.0" } ?, Query
?, Status ?, ServerStatus ?, Expires ?, ProviderID ?, (Redirect | Ref) ?, LocalID *, EquivID *, CanonicalID ?, CanonicalEquivID ?, Service *, element saml:Assertion
{anyelementbody} ?, non.xrd.element * } Query=element Query { non.xrd.attribute *, text } statuspattern = attribute code {xs:integer}, attribute cid {
"absent" | "off" | "verified" |
"failed" }, attribute ceid {
"absent" | "off" | "verified" |
"failed" }, text Status=element Status { statuspattern } ServerStatus = element ServerStatus { statuspattern } Expires = element Expires { xs:dateTime } Redirect = element Redirect { attribute priority {xs:integer}?,
xs:anyURI } Ref = element Ref{ attribute priority {xs:integer}?,
xs:anyURI } ProviderID = element ProviderID { xs:anyURI } # not specifying requirements for saml:Assertion -
maybe we should? LocalID = element LocalID { attribute priority {xs:integer}, xs:anyURI } EquivID = element EquivID { attribute priority {xs:integer}, xs:anyURI } CanonicalID = element CanonicalID { xs:anyURI } CanonicalEquivID = element CanonicalEquivID { xs:anyURI } Service = element Service { attribute priority {xs:integer}?,
ProviderID?, LocalID *, Type *, Path *, MediaType *, (URI+|Redirect+|Ref+)?, element ds:KeyInfo
{anyelementbody}?, non.xrd.element * } URI = element URI { attribute priority {xs:integer}?,
xs:anyURI } selection.attributes = attribute match
{"any" | "default" | "non-null" |
"null" },
attribute select { xs:boolean} Type = element Type { selection.attributes, xs:anyURI } Path = element Path { selection.attributes, xs:string } MediaType = element MediaType { selection.attributes, xs:string } |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]