[Home] [By Thread] [By Date] [Recent Entries]

  • From: David Carlisle <davidc@n...>
  • To: =?KOI8-R?Q?=CF=CC=D8=C7=C1_=CB=D2=D9=D6=C1=CE=CF=D7=D3=CB=C1=D1?= <olga.kryzhanovska@g...>
  • Date: Mon, 03 Dec 2012 23:28:19 +0000

On 03/12/2012 23:19, ÏÌØÇÁ ËÒÙÖÁÎÏ×ÓËÁÑ wrote:
> Michael, how does nesting work? Can I just take the text of &foo;,
> expand that until I run out of &...; parts and insert the result in
> the text stream?
>
> Olga



No because if you have

<!ENTITY foo "<x>aaa"  >

with a replacement text that has a start tag but no close, you can not 
flag an error at that point as the document is still well formed if the 
entity is not referenced.

<!DOCTYPE x [
<!ENTITY foo "<x>aaa">
]>
<x>
</x>


is OK, but

<!DOCTYPE x [
<!ENTITY foo "<x>aaa">
]>
<x>
&foo;</x>
</x>



is not well formed:

$ rxp -sx bad2.xml
Error: Element ends in different entity from that in which it starts
  in unnamed entity at line 5 char 9 of file:///c:/tmp/bad2.xml


However if you just expanded the foo without doing the check, and got


<!DOCTYPE x [
]>
<x>
<x>aaa</x>
</x>

It would, again, be well formed.

So you need to keep track of entity boundaries you can not simply expand 
all the entities as macros and then parse the result.

David







[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member