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 &lt; requires double escaping).

<!DOCTYPE x [
<!ENTITY fooa "A &#60;b>x&#60;/b>">
<!ENTITY foob "B &lt;b>x&lt;/b>">
<!ENTITY fooc "C <b>x</b>">
]>
<x>&fooa; &foob; &fooc; </x>

foob using an entity reference &lt;  has replacement text using &lt; so
when foob is is referenced it generates the < as character data

 but for fooa, the numeric character reference &#60; 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 &lt;b&gt;x&lt;/b&gt; C <b>x</b> </x>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.