XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
[SAX] Looking for the missing event

hi,

when I try this :

         try {
             TransformerHandler th = ((SAXTransformerFactory) 
TransformerFactory.newInstance()).newTransformerHandler();
             StringWriter sw = new StringWriter();
             th.setResult(new StreamResult( sw ) );
             SAXParser sp = SAXParserFactory.newInstance().newSAXParser();
             System.out.println( sp.getClass().getName() );
             XMLReader reader = sp.getXMLReader();
             System.out.println( reader.getClass().getName() );
             reader.setContentHandler( th );
             reader.setDTDHandler( th );
             reader.setProperty( XMLNames.LEXICAL_HANDLER_SAX_PROPERTY, 
th );
             String xml = "<?xml version=\"1.0\"?>" +
                 "<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 
1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\";>"+
                 "<plist version=\"1.0\"/>";
             reader.parse( new InputSource( new StringReader( xml ) ) );
             System.out.println( sw );
         } catch ( Exception e ) {
             e.printStackTrace();
             fail( e.toString() + " shouldn't be thrown.");
         }

...I get this :
org.apache.xerces.jaxp.SAXParserImpl
org.apache.xerces.parsers.SAXParser
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";<!--- Primitive types 
--><!-- Contents interpreted as Base-64 encoded --><!-- Contents should 
conform to a subset of ISO 8601 (in particular, YYYY '-' MM '-' DD 'T' 
HH ':' MM ':' SS 'Z'.  Smaller units may be omitted with a loss of 
precision) --><!-- Numerical primitives --><!-- Boolean constant true 
--><!-- Boolean constant false --><!-- Contents should represent a 
floating point number matching ("+" | "-")? d+ ("."d*)? ("E" ("+" | "-") 
d+)? where d is a digit 0-9.  --><!-- Contents should represent a 
(possibly signed) integer number in base 10 -->>
<plist version="1.0"/>

the external DTD contains some XML comments that are reported in the 
output ; the formatted result is incorrect :
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";<!--- Primitive types

instead of :
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"; [<!--- Primitive types

or even rather :
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>

The correct output should be the last, but I'm not sure that the 
serializer can distinguish a comment that occurs in the internal subset 
from a comment that occurs in the external subset : there aren't such 
events, particularly if we look at TRAX 
(javax.xml.transform.sax.TransformerHandler) and even if we also 
consider org.xml.sax.ext.DeclHandler

Is there a workaround ?
Did I miss something ?

-- 
Cordialement,

               ///
              (. .)
  --------ooO--(_)--Ooo--------
|      Philippe Poulard       |
  -----------------------------
  http://reflex.gforge.inria.fr/
        Have the RefleX !


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


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS