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
> 
-- 
Christophe Barbe - Software Engineer
Objective Systems, Inc.
REAL WORLD ASN.1 AND XML SOLUTIONS
Tel: +1 (484) 875-9841
Fax: +1 (484) 875-9830
Toll-free: (877) 307-6855 (USA only)
http://www.obj-sys.com

_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to