Re: Weird XML rules
David Carlisle <[email protected]>
| Newsgroups | gmane.text.xml.devel |
|---|---|
| Message-ID | <CAEW6iOhPyY=pV93xQLMsL5_mFXqVsN-Sq+yE+uSZGKFZkrZ9ig@mail.gmail.com> |
On Sat, 19 Mar 2022 at 13:45, Roger L Costello <[email protected]> wrote: > On Thursday, Liam Quin wrote: > > > numeric character references are always treated as data when they are > read, not markup. > Note that's true but needs to be read with care as the same string may be read twice (which is why the definition of < requires double escaping). <!DOCTYPE x [ <!ENTITY fooa "A <b>x</b>"> <!ENTITY foob "B <b>x</b>"> <!ENTITY fooc "C <b>x</b>"> ]> <x>&fooa; &foob; &fooc; </x> foob using an entity reference < has replacement text using < so when foob is is referenced it generates the < as character data but for fooa, the numeric character reference < produces the character < in the replacement text of the entity fooa, so when that entity is used the < starts a <b> start tag, so fooa is the same as fooc and produces a b element. $ rxp -x lt.xml <x>A <b>x</b> B <b>x</b> C <b>x</b> </x>