On Fri, 2006-05-12 at 16:25 +0100, Mike Taylor wrote:
> I am looking at a bunch of ZeeRex records, all of which are not
> namespaced -- that is, they begin <explain> rather than:
> <explain xmlns="http://explain.z3950.org/dtd/2.0/">
That's bad of them.
Of course, if the files were produced outside of SRU or a specifically
XML environment, it's perhaps not totally unexpected.
> However, to my surprise when I went to the ZeeRex web-site, I found
> that the "definitive rendition" of the 2.0 DTD [...]
> does _not_ have the namespace. More strangely still, I see that the
> corresponding XML DTD at [...] _does_ have the namespace!
> And so does corresponding the XML Schema at:
> http://explain.z3950.org/dtd/zeerex-2.0.xsd
Because as an SGML DTD, it doesn't have the concept of a namespace.
My understanding is that XML DTDs also do not have the concept of a
namespace, but am very willing to be corrected on that front :)
> Now you (Rob) will probably remember that I was the original author of
> this site. I don't remember the thought processes behind the SGML
> DTD/XML DTD difference at all
I write SGML DTDs. We wrote ... a long time ago ... a little script to
take out the - - from each element, at which point it parsed as an XML
DTD. However it's totally unsurprising that it might not be 100%
correct with regards to namespaces.
> Do you remember what was going on at that time? I assume that we
> agreed that the namespace element should be added, but why would we
> have added it only to the XML DTD and not the SGML DTD?
I don't have any recollection of that change, and see above regarding
namespaces in SGML and in DTDs.
> I also notice that that the Z39.92 DSFTU at
> http://www.niso.org/standards/resources/Z39-92-DSFTU.pdf
> says (in chapter 6, XML Binding, on p. 14 of the PDF):
> The namespace for these records is:
> http://explain.z3950.org/dtd/2.1/
> but the XML DTD in Appendix A (pp. 26ff of the PDF) does not specify [...]
> As a result, that DTD is unable to validate valid ZeeRex files.
The schema should have the namespace however, which is what you should
use to validate, rather than the DTD. (If you have some overriding need
to validate ZeeRex files rather than simply check that they are
sufficiently well formed and regular ... see the note about extending
ZeeRex files with additional namespaces)
In particular, the little xmlns hack is insufficient as there's nothing
preventing:
<zeerex:explain xmlns:zeerex="http://...">
<zeerex:serverInfo ...>
...
</zeerex:explain>
Or any other such prefix, which are perfectly valid but wouldn't
validate (I believe).
Rob
--
Dr Robert Sanderson
Dept of Computer Science, University of Liverpool
Home: http://www.csc.liv.ac.uk/~azaroth/
Cheshire: http://www.cheshire3.org/
|