You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by ab...@locus.apache.org on 2000/06/09 19:54:23 UTC
cvs commit: xml-stylebook/src/org/apache/stylebook/printers HTMLPrinter.java
abagchi 00/06/09 10:54:22
Modified: src/org/apache/stylebook/printers HTMLPrinter.java
Log:
Now prints UNICODE characters
Revision Changes Path
1.4 +209 -194 xml-stylebook/src/org/apache/stylebook/printers/HTMLPrinter.java
Index: HTMLPrinter.java
===================================================================
RCS file: /home/cvs/xml-stylebook/src/org/apache/stylebook/printers/HTMLPrinter.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- HTMLPrinter.java 1999/11/29 02:03:22 1.3
+++ HTMLPrinter.java 2000/06/09 17:54:22 1.4
@@ -10,7 +10,8 @@
import org.apache.stylebook.*;
import java.io.IOException;
import java.io.OutputStream;
-import java.io.PrintStream;
+import java.io.OutputStreamWriter;
+import java.io.BufferedWriter;
import org.w3c.dom.Attr;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Comment;
@@ -33,10 +34,13 @@
* @author <a href="mailto:pier@apache.org">Pierpaolo Fumagalli</a>
* @author Copyright 1999 © <a href="http://www.apache.org">The Apache
* Software Foundation</a>. All rights reserved.
- * @version CVS $Revision: 1.3 $ $Date: 1999/11/29 02:03:22 $
+ * @version CVS $Revision: 1.4 $ $Date: 2000/06/09 17:54:22 $
*/
-public class HTMLPrinter extends AbstractComponent implements Printer {
+public class HTMLPrinter extends AbstractComponent implements Printer
+{
+ final static String ENCODING = "Unicode";
+
/**
* Print a DOM Document.
*
@@ -47,253 +51,264 @@
* @exception CreationException If the Document cannot be printed.
*/
public void print(Document doc, CreationContext c, OutputStream out)
- throws CreationException, IOException {
- printDocument(doc,new PrintStream(out));
- }
+ throws CreationException, IOException {
+ BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out,ENCODING));
+ printDocument(doc, writer);
+ writer.flush();
+ }
+
/** Process a nodelist calling the appropriate print...() method. */
- private void printNodeList(NodeList list, PrintStream out) {
- for (int x=0;x<list.getLength();x++) {
+ private void printNodeList(NodeList list, BufferedWriter out) throws IOException {
+ for ( int x=0;x<list.getLength();x++ )
+ {
Node node=list.item(x);
- switch (node.getNodeType()) {
- case Node.ATTRIBUTE_NODE:
- printAttribute((Attr)node,out);
- break;
- case Node.CDATA_SECTION_NODE:
- printCDATASection((CDATASection)node,out);
- break;
- case Node.COMMENT_NODE:
- printComment((Comment)node,out);
- break;
- case Node.DOCUMENT_FRAGMENT_NODE:
- printDocumentFragment((DocumentFragment)node,out);
- break;
- case Node.DOCUMENT_NODE:
- printDocument((Document)node,out);
- break;
- case Node.DOCUMENT_TYPE_NODE:
- printDocumentType((DocumentType)node,out);
- break;
- case Node.ELEMENT_NODE:
- printElement((Element)node,out);
- break;
- case Node.ENTITY_NODE:
- printEntity((Entity)node,out);
- break;
- case Node.ENTITY_REFERENCE_NODE:
- printEntityReference((EntityReference)node,out);
- break;
- case Node.NOTATION_NODE:
- printNotation((Notation)node,out);
- break;
- case Node.PROCESSING_INSTRUCTION_NODE:
- printProcessingInstruction((ProcessingInstruction)node,out);
- break;
- case Node.TEXT_NODE:
- printText((Text)node,out);
- break;
+ switch ( node.getNodeType() )
+ {
+ case Node.ATTRIBUTE_NODE:
+ printAttribute((Attr)node,out);
+ break;
+ case Node.CDATA_SECTION_NODE:
+ printCDATASection((CDATASection)node,out);
+ break;
+ case Node.COMMENT_NODE:
+ printComment((Comment)node,out);
+ break;
+ case Node.DOCUMENT_FRAGMENT_NODE:
+ printDocumentFragment((DocumentFragment)node,out);
+ break;
+ case Node.DOCUMENT_NODE:
+ printDocument((Document)node,out);
+ break;
+ case Node.DOCUMENT_TYPE_NODE:
+ printDocumentType((DocumentType)node,out);
+ break;
+ case Node.ELEMENT_NODE:
+ printElement((Element)node,out);
+ break;
+ case Node.ENTITY_NODE:
+ printEntity((Entity)node,out);
+ break;
+ case Node.ENTITY_REFERENCE_NODE:
+ printEntityReference((EntityReference)node,out);
+ break;
+ case Node.NOTATION_NODE:
+ printNotation((Notation)node,out);
+ break;
+ case Node.PROCESSING_INSTRUCTION_NODE:
+ printProcessingInstruction((ProcessingInstruction)node,out);
+ break;
+ case Node.TEXT_NODE:
+ printText((Text)node,out);
+ break;
}
}
}
/** Print an ATTRIBUTE (name="value") node. */
- private void printAttribute(Attr node, PrintStream out) {
- out.print(node.getName()+"=\""+node.getValue()+"\"");
+ private void printAttribute(Attr node, BufferedWriter out) throws IOException {
+ out.write(node.getName()+"=\""+node.getValue()+"\"");
}
/** Print a CDATA (<[CDATA[ ... ]]>) node. */
- private void printCDATASection(CDATASection node, PrintStream out) {
+ private void printCDATASection(CDATASection node, BufferedWriter out) throws IOException {
printString(node.getData(),out);
}
/** Print a COMMENT (<!-- ... -->) node. */
- private void printComment(Comment node, PrintStream out) {
- out.print("<!--"+node.getData()+"-->");
+ private void printComment(Comment node, BufferedWriter out) throws IOException {
+ out.write("<!--"+node.getData()+"-->");
}
/** Print a DOCUMENT FRAGMENT (????) node. */
- private void printDocumentFragment(DocumentFragment node, PrintStream out) {
- out.print("<!-- Document Fragment Node -->");
+ private void printDocumentFragment(DocumentFragment node, BufferedWriter out) throws IOException {
+ out.write("<!-- Document Fragment Node -->");
}
/** Print a DOCUMENT node. */
- private void printDocument(Document node, PrintStream out) {
+ private void printDocument(Document node, BufferedWriter out) throws IOException {
printNodeList(node.getChildNodes(),out);
}
/** Print a DOCUMENT TYPE (<!DOCTYPE ... bla bla bla>) node. */
- private void printDocumentType(DocumentType node, PrintStream out) {
- out.print("<!-- DOCTYPE "+node.getName()+" -->");
+ private void printDocumentType(DocumentType node, BufferedWriter out) throws IOException {
+ out.write("<!-- DOCTYPE "+node.getName()+" -->");
}
/** Print a ELEMENT (do I need to supply the example ??? :) node. */
- private void printElement(Element node, PrintStream out) {
+ private void printElement(Element node, BufferedWriter out) throws IOException {
String tag=node.getTagName().toUpperCase();
- out.print("<"+tag);
+ out.write("<"+tag);
// Process attributes
NamedNodeMap atts=node.getAttributes();
- if ((null!=atts) && (atts.getLength()>0)) {
- for (int x=0; x<atts.getLength(); x++) {
- out.print(' ');
+ if ( (null!=atts) && (atts.getLength()>0) )
+ {
+ for ( int x=0; x<atts.getLength(); x++ )
+ {
+ out.write(' ');
printAttribute((Attr)atts.item(x),out);
}
}
- out.print(">");
+ out.write(">");
// Process child nodes
- if ((null!=node.getChildNodes()) &&
- (node.getChildNodes().getLength()>0)) {
+ if ( (null!=node.getChildNodes()) &&
+ (node.getChildNodes().getLength()>0) )
+ {
printNodeList(node.getChildNodes(),out);
}
-
+
// Print the END tag...
- if(tag.equals("AREA")) return;
- else if(tag.equals("BASE")) return;
- else if(tag.equals("BASEFONT")) return;
- else if(tag.equals("BR")) return;
- else if(tag.equals("COL")) return;
- else if(tag.equals("FRAME")) return;
- else if(tag.equals("HR")) return;
- else if(tag.equals("IMG")) return;
- else if(tag.equals("INPUT")) return;
- else if(tag.equals("ISINDEX")) return;
- else if(tag.equals("LINK")) return;
- else if(tag.equals("META")) return;
- else if(tag.equals("PARAM")) return;
- out.print("</"+tag+">");
+ if ( tag.equals("AREA") ) return;
+ else if ( tag.equals("BASE") ) return;
+ else if ( tag.equals("BASEFONT") ) return;
+ else if ( tag.equals("BR") ) return;
+ else if ( tag.equals("COL") ) return;
+ else if ( tag.equals("FRAME") ) return;
+ else if ( tag.equals("HR") ) return;
+ else if ( tag.equals("IMG") ) return;
+ else if ( tag.equals("INPUT") ) return;
+ else if ( tag.equals("ISINDEX") ) return;
+ else if ( tag.equals("LINK") ) return;
+ else if ( tag.equals("META") ) return;
+ else if ( tag.equals("PARAM") ) return;
+ out.write("</"+tag+">");
}
/** Print a ENTITY node (NOTE: This should be used with DOCTYPE). */
- private void printEntity(Entity node, PrintStream out) {
- out.print("<!-- Entity Node -->");
+ private void printEntity(Entity node, BufferedWriter out) throws IOException {
+ out.write("<!-- Entity Node -->");
}
/** Print a ENTITY REFERENCE node (NOTE: Again, used in within DOCTYPE). */
- private void printEntityReference(EntityReference node, PrintStream out) {
+ private void printEntityReference(EntityReference node, BufferedWriter out) throws IOException {
printString(node.getFirstChild().getNodeValue(),out);
}
/** Print a NOTATION node (NOTE: Again -3rd-, used in within DOCTYPE). */
- private void printNotation(Notation node, PrintStream out) {
- out.print("<!-- Notation Node -->");
+ private void printNotation(Notation node, BufferedWriter out) throws IOException {
+ out.write("<!-- Notation Node -->");
}
/** Print a PROCESSING INSTRUCTION (<?name ...?>) node. */
- private void printProcessingInstruction(ProcessingInstruction node, PrintStream out) {
- out.print("<!-- PI:"+node.getTarget()+" "+node.getData()+"-->");
+ private void printProcessingInstruction(ProcessingInstruction node, BufferedWriter out) throws IOException {
+ out.write("<!-- PI:"+node.getTarget()+" "+node.getData()+"-->");
}
/** Print a TEXT (see example for ELEMENT) node. */
- private void printText(Text node, PrintStream out) {
+ private void printText(Text node, BufferedWriter out) throws IOException {
printString(node.getData(),out);
}
-
- private void printString(String data, PrintStream out) {
- for (int x=0; x<data.length(); x++) {
- char c=data.charAt(x);
- if (c=='\n') out.println();
- else if (c==34) out.print(""");
- else if (c==38) out.print("&");
- else if (c==60) out.print("<");
- else if (c==62) out.print(">");
- else if (c==8364) out.print("€");
- else if ((c>=160) && (c<=255)) switch (c) {
- case 160: out.print(" "); break;
- case 161: out.print("¡"); break;
- case 162: out.print("¢"); break;
- case 163: out.print("£"); break;
- case 164: out.print("¤"); break;
- case 165: out.print("¥"); break;
- case 166: out.print("¦"); break;
- case 167: out.print("§"); break;
- case 168: out.print("¨"); break;
- case 169: out.print("©"); break;
- case 170: out.print("ª"); break;
- case 171: out.print("«"); break;
- case 172: out.print("¬"); break;
- case 173: out.print("­"); break;
- case 174: out.print("®"); break;
- case 175: out.print("¯"); break;
- case 176: out.print("°"); break;
- case 177: out.print("±"); break;
- case 178: out.print("²"); break;
- case 179: out.print("³"); break;
- case 180: out.print("´"); break;
- case 181: out.print("µ"); break;
- case 182: out.print("¶"); break;
- case 183: out.print("·"); break;
- case 184: out.print("¸"); break;
- case 185: out.print("¹"); break;
- case 186: out.print("º"); break;
- case 187: out.print("»"); break;
- case 188: out.print("¼"); break;
- case 189: out.print("½"); break;
- case 190: out.print("¾"); break;
- case 191: out.print("¿"); break;
- case 192: out.print("À"); break;
- case 193: out.print("Á"); break;
- case 194: out.print("Â"); break;
- case 195: out.print("Ã"); break;
- case 196: out.print("Ä"); break;
- case 197: out.print("Å"); break;
- case 198: out.print("Æ"); break;
- case 199: out.print("Ç"); break;
- case 200: out.print("È"); break;
- case 201: out.print("É"); break;
- case 202: out.print("Ê"); break;
- case 203: out.print("Ë"); break;
- case 204: out.print("Ì"); break;
- case 205: out.print("Í"); break;
- case 206: out.print("Î"); break;
- case 207: out.print("Ï"); break;
- case 208: out.print("Ð"); break;
- case 209: out.print("Ñ"); break;
- case 210: out.print("Ò"); break;
- case 211: out.print("Ó"); break;
- case 212: out.print("Ô"); break;
- case 213: out.print("Õ"); break;
- case 214: out.print("Ö"); break;
- case 215: out.print("×"); break;
- case 216: out.print("Ø"); break;
- case 217: out.print("Ù"); break;
- case 218: out.print("Ú"); break;
- case 219: out.print("Û"); break;
- case 220: out.print("Ü"); break;
- case 221: out.print("Ý"); break;
- case 222: out.print("Þ"); break;
- case 223: out.print("ß"); break;
- case 224: out.print("à"); break;
- case 225: out.print("á"); break;
- case 226: out.print("â"); break;
- case 227: out.print("ã"); break;
- case 228: out.print("ä"); break;
- case 229: out.print("å"); break;
- case 230: out.print("æ"); break;
- case 231: out.print("ç"); break;
- case 232: out.print("è"); break;
- case 233: out.print("é"); break;
- case 234: out.print("ê"); break;
- case 235: out.print("ë"); break;
- case 236: out.print("ì"); break;
- case 237: out.print("í"); break;
- case 238: out.print("î"); break;
- case 239: out.print("ï"); break;
- case 240: out.print("ð"); break;
- case 241: out.print("ñ"); break;
- case 242: out.print("ò"); break;
- case 243: out.print("ó"); break;
- case 244: out.print("ô"); break;
- case 245: out.print("õ"); break;
- case 246: out.print("ö"); break;
- case 247: out.print("÷"); break;
- case 248: out.print("ø"); break;
- case 249: out.print("ù"); break;
- case 250: out.print("ú"); break;
- case 251: out.print("û"); break;
- case 252: out.print("ü"); break;
- case 253: out.print("ý"); break;
- case 254: out.print("þ"); break;
- case 255: out.print("ÿ"); break;
- } else out.print(c);
+
+ private void printString(String data, BufferedWriter out) throws IOException {
+ for ( int x=0; x<data.length(); x++ )
+ {
+ char c=data.charAt(x);
+ if ( c=='\n' ) out.write("\n");
+ else if ( c==34 ) out.write(""");
+ else if ( c==38 ) out.write("&");
+ else if ( c==60 ) out.write("<");
+ else if ( c==62 ) out.write(">");
+ else if ( c==8364 ) out.write("€");
+ else if ( (c>=160) && (c<=255) ) switch ( c )
+ {
+ case 160: out.write(" "); break;
+ case 161: out.write("¡"); break;
+ case 162: out.write("¢"); break;
+ case 163: out.write("£"); break;
+ case 164: out.write("¤"); break;
+ case 165: out.write("¥"); break;
+ case 166: out.write("¦"); break;
+ case 167: out.write("§"); break;
+ case 168: out.write("¨"); break;
+ case 169: out.write("©"); break;
+ case 170: out.write("ª"); break;
+ case 171: out.write("«"); break;
+ case 172: out.write("¬"); break;
+ case 173: out.write("­"); break;
+ case 174: out.write("®"); break;
+ case 175: out.write("¯"); break;
+ case 176: out.write("°"); break;
+ case 177: out.write("±"); break;
+ case 178: out.write("²"); break;
+ case 179: out.write("³"); break;
+ case 180: out.write("´"); break;
+ case 181: out.write("µ"); break;
+ case 182: out.write("¶"); break;
+ case 183: out.write("·"); break;
+ case 184: out.write("¸"); break;
+ case 185: out.write("¹"); break;
+ case 186: out.write("º"); break;
+ case 187: out.write("»"); break;
+ case 188: out.write("¼"); break;
+ case 189: out.write("½"); break;
+ case 190: out.write("¾"); break;
+ case 191: out.write("¿"); break;
+ case 192: out.write("À"); break;
+ case 193: out.write("Á"); break;
+ case 194: out.write("Â"); break;
+ case 195: out.write("Ã"); break;
+ case 196: out.write("Ä"); break;
+ case 197: out.write("Å"); break;
+ case 198: out.write("Æ"); break;
+ case 199: out.write("Ç"); break;
+ case 200: out.write("È"); break;
+ case 201: out.write("É"); break;
+ case 202: out.write("Ê"); break;
+ case 203: out.write("Ë"); break;
+ case 204: out.write("Ì"); break;
+ case 205: out.write("Í"); break;
+ case 206: out.write("Î"); break;
+ case 207: out.write("Ï"); break;
+ case 208: out.write("Ð"); break;
+ case 209: out.write("Ñ"); break;
+ case 210: out.write("Ò"); break;
+ case 211: out.write("Ó"); break;
+ case 212: out.write("Ô"); break;
+ case 213: out.write("Õ"); break;
+ case 214: out.write("Ö"); break;
+ case 215: out.write("×"); break;
+ case 216: out.write("Ø"); break;
+ case 217: out.write("Ù"); break;
+ case 218: out.write("Ú"); break;
+ case 219: out.write("Û"); break;
+ case 220: out.write("Ü"); break;
+ case 221: out.write("Ý"); break;
+ case 222: out.write("Þ"); break;
+ case 223: out.write("ß"); break;
+ case 224: out.write("à"); break;
+ case 225: out.write("á"); break;
+ case 226: out.write("â"); break;
+ case 227: out.write("ã"); break;
+ case 228: out.write("ä"); break;
+ case 229: out.write("å"); break;
+ case 230: out.write("æ"); break;
+ case 231: out.write("ç"); break;
+ case 232: out.write("è"); break;
+ case 233: out.write("é"); break;
+ case 234: out.write("ê"); break;
+ case 235: out.write("ë"); break;
+ case 236: out.write("ì"); break;
+ case 237: out.write("í"); break;
+ case 238: out.write("î"); break;
+ case 239: out.write("ï"); break;
+ case 240: out.write("ð"); break;
+ case 241: out.write("ñ"); break;
+ case 242: out.write("ò"); break;
+ case 243: out.write("ó"); break;
+ case 244: out.write("ô"); break;
+ case 245: out.write("õ"); break;
+ case 246: out.write("ö"); break;
+ case 247: out.write("÷"); break;
+ case 248: out.write("ø"); break;
+ case 249: out.write("ù"); break;
+ case 250: out.write("ú"); break;
+ case 251: out.write("û"); break;
+ case 252: out.write("ü"); break;
+ case 253: out.write("ý"); break;
+ case 254: out.write("þ"); break;
+ case 255: out.write("ÿ"); break;
+ }
+ else out.write(c);
}
}
}
Re: cvs commit: xml-stylebook/src/org/apache/stylebook/printers
HTMLPrinter.java
Posted by Tim Landscheidt <ti...@gmx.de>.
abagchi@locus.apache.org schrieb:
> [...]
> + final static String ENCODING = "Unicode";
> [...]
If possible, please stick to the encodings listed in
<URI:http://java.sun.com/j2se/1.3/docs/api/java/lang/package-summary.html#charenc> :-).
TIA,
Tim