[Home] [By Thread] [By Date] [Recent Entries]
To allow DTDs to interoperate with namespaces, one might attempt the following: <!ENTITY % rd-prefix "rd"> <!ENTITY % rd-colon ":"> <!ELEMENT %rd-prefix;%rd-colon;test (#PCDATA)> Then you could redefine the prefixes and colons by redefining the respective entities. However, this fails because XML parsers add an extra space on each side of the resolved parameter entity reference so what you really get is this: <!ELEMENT rd : test (#PCDATA)> when what you want is <!ELEMENT rd:test (#PCDATA)> This behavior is described in section 4.4.8 of the XML 1.0 spec, http://www.xml.com/axml/target.html#as-PE However a trick I picked up from the MathML 2.0 DTD is to use double indirection like this: <!ENTITY % rd-prefix "rd"> <!ENTITY % rd-colon ":"> <!ENTITY % rd-test "%rd-colon;%rd-prefix;test"> <!ELEMENT %rd-test; (#PCDATA)> This works but for the life of me I can't see why. How come the rd-test entity is defined as "rd:test" instead of " rd : test"? Can anyone justify this behavior in terms of the spec? +-----------------------+------------------------+-------------------+ | Elliotte Rusty Harold | elharo@m... | Writer/Programmer | +-----------------------+------------------------+-------------------+ | Java I/O (O'Reilly & Associates, 1999) | | http://metalab.unc.edu/javafaq/books/javaio/ | | http://www.amazon.com/exec/obidos/ISBN=1565924851/cafeaulaitA/ | +----------------------------------+---------------------------------+ | Read Cafe au Lait for Java News: http://metalab.unc.edu/javafaq/ | | Read Cafe con Leche for XML News: http://metalab.unc.edu/xml/ | +----------------------------------+---------------------------------+ *************************************************************************** This is xml-dev, the mailing list for XML developers. To unsubscribe, mailto:majordomo@x...&BODY=unsubscribe%20xml-dev List archives are available at http://xml.org/archives/xml-dev/ ***************************************************************************
|

Cart



