Perhaps a bug in XHTML Mod DTDs? Processing instructions may not contain ":"

Hello dear list members,

I think I might have found a bug in the XHTML Modularization DTDs.
(Oh no, not he again!)

The XHTML Modularization DTDs contain a processing instruction of the form 
<?IS10744:arch ... ?>

This is what XML Namespaces says about colons and processing instructions:

"6. Conformance of Documents
The effect of conformance is that in such a document: 
* [...]
* No entity names, PI targets, or notation names contain any colons.

Does this rule also apply for PIs in the DTD?
I think: Yes it does, since the DTD finally is a part of the document.

So the <?IS10744:arch ... ?> processing instruction in the DTD breakes XML 
Namespaces conformance and therefore Namespace aware XSLT processors like 
saxon must reject that PI (especially they must reject trying to filter out 
it using <xsl:template match="processing-instruction('IS10744:arch')"/>). (I 
already filed a probably wrong and therefore rejected bug report to Michael 
H. Kay, the author of saxon)

Another important question on this is:
Must or must not PIs in the DTD be reported to the application (like an XSLT 
processor)? I was unable to find something in REC-xml and REC-xml-names that 
helped me answering that question.

What do you think?

I already thought of crossposting this to the XML list, since this question 
is a common XML question not restricted to XHTML. But I didn't crosspost.

Greetings and have a nice weekend and fun with your brains
Source code to demonstrate the problem / bug (?)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" 
<html xml:lang="en">
<head><title>Some HTML document</title>	</head>
<body><p>Some HTML document</p></body>

<xsl:transform xmlns:xsl="" version="1.0">
	<!-- filter out PIs coming from the DTD (at least Xerces and AElfred report 
them to the application) -->
	<xsl:template match="processing-instruction('doc') | 
processing-instruction('IS10744') | processing-instruction('IS10744:arch')" />

	<!-- copy the rest, including php PIs -->
	<xsl:template match="@*|node()">
		<xsl:copy><xsl:apply-templates match="@*|node()"/></xsl:copy>

The processing instruction in question is contained in the external subset of 
the XHTML document's DTD.
Christian Wolfgang Hujer
Geschäftsführender Gesellschafter
Telefon: +49 (089) 27 37 04 37
Telefax: +49 (089) 27 37 04 39

Received on Friday, 22 February 2002 09:16:47 UTC