
Because of the way we use RelaxNG as a pivot format in generating XSD, we're going to end up with invalid XSDs around the anyElement issue. Basically, XSD handles "anyXML" sections differently than RelaxNG, and so Relax discards information we can provide with anyElement to avoid the problem. Relax allows you to say "these elements/namespaces can't occur in the spot where any XML is allowed." XSD, on the other hand, lets you say any XML but "only these namespaces here", and/or "any namespace but the default one". Pure ODD is basically capable of saying either of these things, but as far as XSD, because we pipe through Relax, it ends up being able to say neither of them. This is a problem, because in the case of things like <content>, which can contain either Pure ODD TEI elements or RelaxNG, an <xsd:any/> means you have a nondeterministic content model (because "any" includes TEI elements). The XSD solution would be to say <xs:any namespace=" http://relaxng.org/ns/structure/1.0" processContents="skip"/>, but we can't get there from here. The long term solution is probably direct generation of XSD, which is something we'd like for other reasons. Near term might be to scale back use of anyElement or add a post-processing step to XSD generation that puts the necessary information back. Ideas?
participants (1)
-
Hugh Cayless