Re: Quotes in PEReferences

Chris Hubick (maillist@chris.hubick.com)
Thu, 6 Aug 1998 14:43:54 +0000 (GMT)


On Thu, 6 Aug 1998, Chris Hubick wrote:

> <!DOCTYPE test [
> <!ELEMENT test (#PCDATA)>
> <!ENTITY % p0 "a quote (&#34;) test">
> <!ENTITY % p1 "<!ENTITY e1 &#34;">
> %p1;%p0;">
> ]>
> <test>This is&e1; .</test>
>
> My first thought for expanding PEReferences at the lexical level was to
> just convert any quotes in the replacement text to &#37;, but that would
> break the above example. How does one tell to escape the quote when
> substituting p0, but not when substituting p1? Ahhh!

Well, I figured out a way to solve this problem in my parser, when
asking the lexical level for a character, the object in the grammar/parser
layer can just pass down a this pointer which will give the lexical layer
access to the current production hierarchy up to the point where
the character is being requested. That will let me know if I am in a
Comment, EntityValue, DocTypeDecl, or whatever, and allow me to take the
appropriate action. I think. :-)

> 4. It shall be easy to write programs which process XML documents.

Did somebody say easy? :-) Compared to what? Ok, so it isn't
_that_ hard, but I don't know if I would call this easy in the trivial
sense of the word. PE References definitely take this beyond quick
weekend hack.

---
Chris Hubick
mailto:chris@hubick.com
http://www.hubick.com/