This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
Suppose we have an XSLT 2.0 stylesheet xhtml.xsl which has an xsl:output declaration specifying HTML output with the DOCTYPE public and system identifiers from XHTML Strict 1.0. At a later date, we try to reuse this stylesheet via an xsl:import, but change the output to be HTML 5, with a DOCTYPE of the form <!DOCTYPE HTML> (I.e. no system or public identifier). For this to happen, the doctype-public and doctype-system properties must be absent in the xsl:output declaration. This appears to be impossible since the doctype-public and doctype-system properties can't be reset to be absent in the importing stylesheet. They will have values merged from the imported xhtml.xsl. (I believe that specifying doctype-system="" does not have effect of making it absent, but rather sets it o the empty string.)
I agree. This has been raised before and I thought we had fixed it, but I can't see any evidence either of the fix or of the earlier discussion. (Saxon in fact behaves the way you are suggesting: a zero length string for doctype-system or doctype-public is interpreted as "absent". A deliberate non-conformance, and I don't do that without a very strong reason.).
Thanks. Is that likely to make its way into the specification? If so, I'll follow suit.
It appears that we made a decision on this: https://www.w3.org/Bugs/Public/show_bug.cgi?id=5893 but as far as I can see the decision is not reflected in the current specification.
Incidentally, the fact that a bugzilla search for "doctype-system" fails to find bug 5893 would seem worthy of a bug report in its own right.
I have now applied the change that was agreed in erratum E32, in response to bug 5893, bringing the 3.0 spec into line with the 2.0 PER.