<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=“www.w3.org/1999/xhtml”>
http-equiv=“Content-Type” content=“text/html; charset=UTF-8” /><link
rel=“SHORTCUT ICON” href=“/favicon.ico” /><style type=“text/css”>
TD {font-family: Verdana,Arial,Helvetica} BODY {font-family:
Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right:
0em} H1 {font-family: Verdana,Arial,Helvetica} H2 {font-family:
Verdana,Arial,Helvetica} H3 {font-family: Verdana,Arial,Helvetica} A:link,
A:visited, A:active { text-decoration: underline }
</style><title>Entities or no
entities</title></head><body bgcolor=“#8b7765”
text=“#000000” link=“#a06060” vlink=“#000000”><table border=“0”
width=“100%” cellpadding=“5” cellspacing=“0”
align=“center”><tr><td width=“120”><a href=“swpat.ffii.org/”>
src=“epatents.png” alt=“Action against software patents”
/></a></td><td width=“180”><a href=“
www.gnome.org/”>
src=“gnome2.png” alt=“Gnome2 Logo” /></a><a href=“
www.w3.org/Status”>
src=“w3c.png” alt=“W3C Logo” /></a><a href=“
www.redhat.com/”>
src=“redhat.gif” alt=“Red Hat Logo” /></a><div
align=“left”><a href=“
xmlsoft.org/”>
src=“Libxml2-Logo-180x168.gif” alt=“Made with Libxml2 Logo”
/></a></div></td><td><table border=“0”
width=“90%” cellpadding=“2” cellspacing=“0” align=“center”
bgcolor=“#000000”><tr><td><table width=“100%” border=“0”
cellspacing=“1” cellpadding=“3” bgcolor=“#fffacd”><tr><td
align=“center”><h1>The XML C parser and toolkit of
Gnome</h1><h2>Entities or no
entities</h2></td></tr></table></td></tr></table></td></tr></table><table
border=“0” cellpadding=“4” cellspacing=“0” width=“100%”
align=“center”><tr><td bgcolor=“#8b7765”><table
border=“0” cellspacing=“0” cellpadding=“2” width=“100%”><tr><td
valign=“top” width=“200” bgcolor=“#8b7765”><table border=“0”
cellspacing=“0” cellpadding=“1” width=“100%”
bgcolor=“#000000”><tr><td><table width=“100%” border=“0”
cellspacing=“1” cellpadding=“3”><tr><td colspan=“1”
bgcolor=“#eecfa1” align=“center”><center>Developer
Menu</center></td></tr><tr><td
bgcolor=“#fffacd”><form action=“search.php”
enctype=“application/x-www-form-urlencoded” method=“get”><input
name=“query” type=“text” size=“20” value=“” /><input name=“submit”
type=“submit” value=“Search …” /></form><ul><li><a
href=“index.html” style=“font-weight:bold”>Main
Menu</a></li><li><a href=“html/index.html”
style=“font-weight:bold”>Reference
Manual</a></li><li><a href=“examples/index.html”
style=“font-weight:bold”>Code
Examples</a></li><li><a href=“guidelines.html”>XML
Guidelines</a></li><li><a
href=“tutorial/index.html”>Tutorial</a></li><li><a
href=“xmlreader.html”>The Reader
Interface</a></li><li><a
href=“ChangeLog.html”>ChangeLog</a></li><li><a
href=“XSLT.html”>XSLT</a></li><li><a
href=“python.html”>Python and
bindings</a></li><li><a
href=“architecture.html”>libxml2
architecture</a></li><li><a href=“tree.html”>The
tree output</a></li><li><a
href=“interface.html”>The SAX
interface</a></li><li><a href=“xmlmem.html”>Memory
Management</a></li><li><a href=“xmlio.html”>I/O
Interfaces</a></li><li><a href=“library.html”>The
parser interfaces</a></li><li><a
href=“entities.html”>Entities or no
entities</a></li><li><a
href=“namespaces.html”>Namespaces</a></li><li><a
href=“upgrade.html”>Upgrading 1.x
code</a></li><li><a href=“threads.html”>Thread
safety</a></li><li><a href=“DOM.html”>DOM
Principles</a></li><li><a href=“example.html”>A
real example</a></li><li><a href=“xml.html”>flat
page</a>, <a
href=“site.xsl”>stylesheet</a></li></ul></td></tr></table><table
width=“100%” border=“0” cellspacing=“1” cellpadding=“3”><tr><td
colspan=“1” bgcolor=“#eecfa1” align=“center”><center>API
Indexes</center></td></tr><tr><td
bgcolor=“#fffacd”><ul><li><a
href=“APIchunk0.html”>Alphabetic</a></li><li><a
href=“APIconstructors.html”>Constructors</a></li><li><a
href=“APIfunctions.html”>Functions/Types</a></li><li><a
href=“APIfiles.html”>Modules</a></li><li><a
href=“APIsymbols.html”>Symbols</a></li></ul></td></tr></table><table
width=“100%” border=“0” cellspacing=“1” cellpadding=“3”><tr><td
colspan=“1” bgcolor=“#eecfa1”
align=“center”><center>Related
links</center></td></tr><tr><td
bgcolor=“#fffacd”><ul><li><a href=“Mail”>mail.gnome.org/archives/xml/“>Mail
archive</a></li><li><a href=”XSLT“>xmlsoft.org/XSLT/”>XSLT
libxslt</a></li><li><a href=“DOM”>phd.cs.unibo.it/gdome2/“>DOM
gdome2</a></li><li><a href=”XML-DSig“>www.aleksey.com/xmlsec/”>XML-DSig
xmlsec</a></li><li><a href=“FTP
ELEMENT EXAMPLE TEXT content= ENTITY_REF INTERNAL_GENERAL_ENTITY xml content=Extensible Markup Language TEXT content=</pre><p>And here is the result when substituting entities:</p><pre>/gnome/src/gnome-xml -> ./tester --debug --noent test/ent1
DOCUMENT version=1.0
ELEMENT EXAMPLE TEXT content= Extensible Markup Language</pre><p>So, entities or no entities? Basically, it depends on your use case. I
suggest that you keep the non-substituting default behaviour and avoid using entities in your XML document or data if you are not willing to handle the entity references elements in the DOM tree.</p><p>Note that at save time libxml2 enforces the conversion of the predefined entities where necessary to prevent well-formedness problems, and will also transparently replace those with chars (i.e. it will not generate entity reference elements in the DOM tree or call the reference() SAX callback when finding them in the input).</p><p><span style=“background-color: #FF0000”>WARNING</span>: handling entities on top of the libxml2 SAX interface is difficult!!! If you plan to use non-predefined entities in your documents, then the learning curve to handle then using the SAX API may be long. If you plan to use complex documents, I strongly suggest you consider using the DOM interface instead and let libxml deal with the complexity rather than trying to do it yourself.</p><p><a href=“bugs.html”>Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>