Possible Bug/Feature with SAXBuilder's setExpandEntities()

David Cheng-Ping Wang <[email protected]>
Newsgroups gmane.comp.java.jdom.general
Message-ID <[email protected]>
Hello,

I'm not sure if this is a bug or a feature, but I thought I would 
report it anyway... I have attached (also reproduced below) a simple 
example that illustrates the problem. I have tested this with Java 
1.6EE, and JDOM's Jan 9th, 2009 nightly build as well as the standard 
1.1 release.

In this example, I am trying to prevent the expansion of the entity 
"&minus;" in an XHTML document that is being read in and then 
immediately written out. I create an instance of SAXBuilder, 
setExpandEntities(false), then call the build() method on an input 
XHTML doc. For simplicity, I then use an instance of XMLOutputter to 
print the parsed document to standard out (Even though I don't think 
it's necessary for standard out, I also make sure the encoding is 
consistent between the Format and the OutputStream and that it is a 
common "US-ASCII" format).

The original XHTML document uses the entity:
&minus;

But, the resulting XHTML printed to standard out shows:
&minus;&#x2212;

Apparently, setting "setExpandEntities(false)" had the effect of 
duplicating the character. I would expect that setting expand 
entities to 'false' would simply leave the "&minus;", without 
duplicating it in US-ASCII formatting.

This isn't a big problem because if the default value, 'true', is 
used for entity expansion, the resulting output will simply contain 
"&#x2212;" instead of duplicating the character. Even though the 
original entity encoding has changed, the resulting output will still 
behave/appear the same as the original, which is probably what's 
normally required.

- Thanks for any feedback & Happy 2009,
- David W.

======= INPUT XHTML DOCUMENT START =======
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" 
href="http://www.w3.org/Math/XSL/pmathml.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">
<html>
   <head>
   </head>
   <body>
     <p>&minus;</p>
   </body>
</html>
======= INPUT XHTML DOCUMENT END =======


======= TEST JAVA CODE START =======
import java.io.File;
import java.io.OutputStreamWriter;

import org.jdom.Document;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class Test {
         public static void main(String[] args) throws Exception{
                 File fileInput = new File("testEntity.xml");
                 Document doc;

                 SAXBuilder b = new SAXBuilder();
                 b.setIgnoringElementContentWhitespace(true);
                 b.setExpandEntities(false);
                 doc = b.build(fileInput);
                 doc.getDocType().setInternalSubset(null);

                 XMLOutputter outputter = new XMLOutputter();
                 Format format = Format.getPrettyFormat();
                 format.setEncoding("US-ASCII");
                 outputter.setFormat(format);

                 outputter.output(doc, new 
OutputStreamWriter(System.out,format.getEncoding()));
         }
}
======= TEST JAVA CODE END =====

_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/[email protected]
jdomExpandEntitiesProblem.zip (application/zip, 1.2 KB) - not displayed
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.