xmllint with the -noent option does the right thing.
Thanks for the help,
Christophe 

On Wed, 2006-11-22 at 14:15 -0500, christophe barbe wrote:
> Thanks Daniel for your answer.
> 
> For example if I want to parse:
> 
> <?xml version="1.0"?>
> <!DOCTYPE EXAMPLE SYSTEM "example.dtd" [
> <!ENTITY xml "Extensible Markup Language">
> <!ENTITY xml2 "Extensible &xml; Markup Language">
> ]>
> <EXAMPLE attr="()&xml;()" attr2="()&xml2;()">
>    &xml;
> </EXAMPLE>
> 
> xmllint gives me the ouput below. There I can see the 2 entity
> declarations. I would expect there the definition of xml2 to refer to
> the first entity. 
> In my program I tried to set xmlSubstituteEntitiesDefault to 1, but it
> does not seem to have any effect. And my output looks like:
>       <EXAMPLE 
>               attr="()Extensible Markup Language;()"
>               attr2="()Extensible &xml; Markup Language()">
>                       Extensible Markup Language
>       </EXAMPLE>
> 
> $ xmllint --debug test.xml
>  DOCUMENT
> version=1.0
> URL=test.xml
> standalone=true
>   DTD(EXAMPLE), SYSTEM example.dtd
>     ENTITYDECL(xml), internal
>      content=Extensible Markup Language
>       TEXT
>         content=Extensible Markup Language
>     ENTITYDECL(xml2), internal
>      content=Extensible &xml; Markup Language
>       TEXT
>         content=Extensible
>       ENTITY_REF(xml)
>         INTERNAL_GENERAL_ENTITY xml
>         content=Extensible Markup Language
>       TEXT
>         content= Markup Language
>   ELEMENT EXAMPLE
>     ATTRIBUTE attr
>       TEXT
>         content=()
>       ENTITY_REF(xml)
>         INTERNAL_GENERAL_ENTITY xml
>         content=Extensible Markup Language
>       TEXT
>         content=()
>     ATTRIBUTE attr2
>       TEXT
>         content=()
>       ENTITY_REF(xml2)
>         INTERNAL_GENERAL_ENTITY xml2
>         content=Extensible &xml; Markup Language
>       TEXT
>         content=()
>     TEXT compact
>       content=
>     ENTITY_REF(xml)
>       INTERNAL_GENERAL_ENTITY xml
>       content=Extensible Markup Language
>     TEXT compact
>       content=
> 
> 
> 
> On Wed, 2006-11-22 at 14:04 -0500, Daniel Veillard wrote:
> > On Wed, Nov 22, 2006 at 12:55:27PM -0500, christophe barbe wrote:
> > > Hi All,
> > > 
> > > I am trying to parse a document with entities using libxml2:
> > > 
> > > <?xml version="1.0" encoding="UTF-8"?>
> > >    <!DOCTYPE schema [
> > >     <!ENTITY ent1 "abc">
> > >     <!ENTITY ent2  "&ent1;def">
> > > ...
> > > 
> > > It looks like libxml does not handle the fact that one entity is defined
> > > in term of another.
> > > 
> > > Is it a legal use of entities?
> > 
> >   yes
> > 
> > > Am I correct in assuming that libxml can not handle this use of
> > > entities?
> > 
> >   no
> >   
> > > I am not sure if the internal tree could handle it properly.
> > 
> >   I am sure it should be able to handle this properly
> > 
> > > The original XML file is a schema included in the following IETF draft:
> > > 
> > > http://www.ietf.org/internet-drafts/draft-ietf-simple-xml-patch-ops-02.txt
> > > 
> > > The entities are used, as macros, to define the regular expression for
> > > xpath expressions.
> > 
> >   No idea what your problem is. If you have a problem reproduceable with
> > xmllint please provide them as attachment and describe the problem.
> > 
> > Daniel
> > 
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to