talks about the spec saying that getText() on the dtd element returns the "internal subset" of the DTD (which is true in java 1.6 docs; 1.5 docs (via webservices) says simply: String value of the DTD). Basically, what this means is that there is no implementation-independent manner of dealing with dtd's right now. Incidentally, the maintenance release of the stax jsr mentioned in WSTX-78 has been withdrawn. There's a pending maintenance release now, but, it doesn't touch dtd's.
I've now tried running the full tapestry-core test suite with the patch with:
a) woodstox as the underlying parser
b) stax:stax:1.2.0 as the underlying parser
c) recompiling with java 1.6 and using the built-in parser
a: fails due to getText() returning the empty string for the DTD
b: likewise fails, but additionally fails due to not supporting external entities
c: worst of all. Can't handle namespace prefixes; at least, it ignores them as the code is now (plus it would make tapestry require java 1.6, which is a nogo; this was more for my curiosity than anything else).
At this point, it appears that there is no good way to deal with DTD's via the standard stax API, but properly dealing with DTD's is critically important since client interpretation of css depends on the doctype used. Thus, I'm closing this issue as "won't fix" and woodstox-independence will have to wait until either:
TAP5-713 is resolved or
2) A user who cares about woodstox independence is willing to step up and provide a patch that actually works (please: be sure to run all of the tapestry-core tests, at least, and make sure they pass before submitting! And be sure to test with java 1.5!)