Peter Flynn said:
FIXED means that after validation, the attribute value will be present
in the tree, whether or not it was explicitly given in the document.
So, for example, you can refer in XSLT to "@a1" and it will always be
"fis". It can indeed be treated as a way of passing fixed information
through from the DTD to the parsed instance.
However, if you're talking about enforcing namespace bindings, and
you're using MSXML as your parser, this doesn't appear to be the case.
I have just been battling with this issue myself, while trying to
produce an XTM 2.0 document which conforms to the DTD.
Without an explicit instance of the xmlns attribute in the document
(matching the #FIXED value), you get the error message:
Use of default namespace declaration attribute in DTD not supported.
This doesn't appear to be a new or unknown problem. A Google search
brought up this posting from Aung Aung (a Microsoft employee, I think),
dated 3 Jan 2001:
"Well, clearly it is a bug on msxml according to the spec. I am pushing
a fix for this.
Workaround : msxml will need the namespace explicitly specified in the
document.
e.g according to the spec if you defined the default namespace in the
DTD, one should not need to put it on the <doc> node."
The "fix" has clearly not been forthcoming ...
Richard Light