gnu.xml
Class XMLPrinter

java.lang.Object
  extended by java.io.Writer
      extended by java.io.PrintWriter
          extended by gnu.lists.PrintConsumer
              extended by gnu.mapping.OutPort
                  extended by gnu.xml.XMLPrinter
All Implemented Interfaces:
Consumer, PositionConsumer, XConsumer, Printable, java.io.Closeable, java.io.Flushable, java.lang.Appendable

public class XMLPrinter
extends OutPort
implements PositionConsumer, XConsumer

Print an event stream in XML format on a PrintWriter.


Field Summary
 boolean canonicalizeCDATA
           
static ThreadLocation doctypePublic
          The system identifier emitted in a DOCTYPE declaration.
static ThreadLocation doctypeSystem
          Fluid parameter to control whether a DOCTYPE declaration is emitted.
 boolean escapeNonAscii
           
 boolean escapeText
           
 boolean indentAttributes
          When indentating, should attributes be lined up?
static ThreadLocation indentLoc
           
 int printIndent
          Controls whether to add extra indentation.
 int useEmptyElementTag
          Handling of empty elements.
 
Fields inherited from class gnu.mapping.OutPort
bout, errLocation, objectFormat, outLocation, printReadable, unregisterRef
 
Fields inherited from class java.io.PrintWriter
out
 
Fields inherited from class java.io.Writer
lock
 
Constructor Summary
XMLPrinter(OutPort out, boolean autoFlush)
           
XMLPrinter(java.io.OutputStream out)
           
XMLPrinter(java.io.OutputStream out, boolean autoFlush)
           
XMLPrinter(java.io.OutputStream out, Path path)
           
XMLPrinter(java.io.Writer out)
           
XMLPrinter(java.io.Writer out, boolean autoFlush)
           
 
Method Summary
 void beginComment()
           
 void beginEntity(java.lang.Object base)
           
 void closeTag()
           
 void consume(SeqPosition position)
          Consume node at current position.
 void endAttribute()
          No more attributes in this element.
 void endComment()
           
 void endDocument()
           
 void endElement()
           
 void endEntity()
           
protected  void endNumber()
           
static java.lang.String formatDecimal(java.math.BigDecimal dec)
          Format java.math.BigDecimal as needed for XPath/XQuery's xs:decimal.
static java.lang.String formatDouble(double d)
          Helper to format xs:double according to XPath/XQuery specification.
static java.lang.String formatFloat(float f)
          Helper to format xs:float according to XPath/XQuery specification.
 boolean ignoring()
          True if consumer is ignoring rest of element.
static boolean isHtmlEmptyElementTag(java.lang.String name)
           
static XMLPrinter make(OutPort out, java.lang.Object style)
           
 void print(java.lang.Object v)
           
 void setPrintXMLdecl(boolean value)
           
 void setStyle(java.lang.Object style)
           
 void startAttribute(java.lang.Object attrType)
          Write a attribute for the current element.
 void startDocument()
           
 void startElement(java.lang.Object type)
           
protected  void startNumber()
           
static java.lang.String toString(java.lang.Object value)
          Convert argument to string in XML syntax.
 void write(char[] buf, int off, int len)
           
 void write(int v)
           
 void write(java.lang.String str, int start, int length)
           
 void writeBaseUri(java.lang.Object uri)
           
 void writeBoolean(boolean v)
           
 void writeCDATA(char[] chars, int offset, int length)
           
 void writeComment(char[] chars, int offset, int length)
           
 void writeComment(java.lang.String chars)
           
 void writeDouble(double d)
           
 void writeFloat(float f)
           
 void writeObject(java.lang.Object v)
           
 void writePosition(AbstractSequence seq, int ipos)
          Consume a single position pair.
 void writeProcessingInstruction(java.lang.String target, char[] content, int offset, int length)
           
protected  void writeQName(java.lang.Object name)
           
 
Methods inherited from class gnu.mapping.OutPort
clearBuffer, close, closeLogFile, closeOnExit, echo, endLogicalBlock, errDefault, freshLine, getColumnNumber, isWordChar, openFile, outDefault, print, print, print, print, print, print, runCleanups, setColumnNumber, setErrDefault, setIndentation, setLogFile, setOutDefault, startLogicalBlock, startLogicalBlock, writeBreak, writeBreakFill, writeBreakLinear, writeSpaceFill, writeSpaceLinear, writeWordEnd, writeWordStart
 
Methods inherited from class gnu.lists.PrintConsumer
write, writeInt, writeLong
 
Methods inherited from class java.io.PrintWriter
append, append, append, checkError, flush, format, format, print, print, print, printf, printf, println, println, println, println, println, println, println, println, println, println, setError, write, write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface gnu.lists.Consumer
write, write, writeInt, writeLong
 

Field Detail

printIndent

public int printIndent
Controls whether to add extra indentation. -1: don't add indentation; 0: pretty-print (avoid needless newlines); 1: indent (force).


indentAttributes

public boolean indentAttributes
When indentating, should attributes be lined up?


canonicalizeCDATA

public boolean canonicalizeCDATA

useEmptyElementTag

public int useEmptyElementTag
Handling of empty elements. 0: No element element tags, as required for canonical XML: <br></br>. 1: Use XML-style empty element tags: <br/> 1: Use HTML-compatible empty element tags: <br />


escapeText

public boolean escapeText

escapeNonAscii

public boolean escapeNonAscii

doctypeSystem

public static final ThreadLocation doctypeSystem
Fluid parameter to control whether a DOCTYPE declaration is emitted. If non-null, this is the the public identifier.


doctypePublic

public static final ThreadLocation doctypePublic
The system identifier emitted in a DOCTYPE declaration. Has no effect if doctypeSystem returns null. If non-null, this is the the system identifier.


indentLoc

public static final ThreadLocation indentLoc
Constructor Detail

XMLPrinter

public XMLPrinter(OutPort out,
                  boolean autoFlush)

XMLPrinter

public XMLPrinter(java.io.Writer out,
                  boolean autoFlush)

XMLPrinter

public XMLPrinter(java.io.OutputStream out,
                  boolean autoFlush)

XMLPrinter

public XMLPrinter(java.io.Writer out)

XMLPrinter

public XMLPrinter(java.io.OutputStream out)

XMLPrinter

public XMLPrinter(java.io.OutputStream out,
                  Path path)
Method Detail

setPrintXMLdecl

public void setPrintXMLdecl(boolean value)

make

public static XMLPrinter make(OutPort out,
                              java.lang.Object style)

toString

public static java.lang.String toString(java.lang.Object value)
Convert argument to string in XML syntax.


setStyle

public void setStyle(java.lang.Object style)

write

public void write(int v)
Specified by:
write in interface Consumer
Overrides:
write in class java.io.PrintWriter

writeBoolean

public void writeBoolean(boolean v)
Specified by:
writeBoolean in interface Consumer
Overrides:
writeBoolean in class PrintConsumer

startNumber

protected void startNumber()
Overrides:
startNumber in class PrintConsumer

endNumber

protected void endNumber()
Overrides:
endNumber in class PrintConsumer

closeTag

public void closeTag()

startDocument

public void startDocument()
Specified by:
startDocument in interface Consumer
Overrides:
startDocument in class PrintConsumer

endDocument

public void endDocument()
Specified by:
endDocument in interface Consumer
Overrides:
endDocument in class PrintConsumer

beginEntity

public void beginEntity(java.lang.Object base)
Specified by:
beginEntity in interface XConsumer

endEntity

public void endEntity()
Specified by:
endEntity in interface XConsumer

writeQName

protected void writeQName(java.lang.Object name)

startElement

public void startElement(java.lang.Object type)
Specified by:
startElement in interface Consumer
Overrides:
startElement in class OutPort

isHtmlEmptyElementTag

public static boolean isHtmlEmptyElementTag(java.lang.String name)

endElement

public void endElement()
Specified by:
endElement in interface Consumer
Overrides:
endElement in class OutPort

startAttribute

public void startAttribute(java.lang.Object attrType)
Write a attribute for the current element. This is only allowed immediately after a startElement.

Specified by:
startAttribute in interface Consumer
Overrides:
startAttribute in class OutPort

endAttribute

public void endAttribute()
Description copied from class: OutPort
No more attributes in this element.

Specified by:
endAttribute in interface Consumer
Overrides:
endAttribute in class OutPort

writeDouble

public void writeDouble(double d)
Specified by:
writeDouble in interface Consumer
Overrides:
writeDouble in class PrintConsumer

writeFloat

public void writeFloat(float f)
Specified by:
writeFloat in interface Consumer
Overrides:
writeFloat in class PrintConsumer

formatDouble

public static java.lang.String formatDouble(double d)
Helper to format xs:double according to XPath/XQuery specification.


formatFloat

public static java.lang.String formatFloat(float f)
Helper to format xs:float according to XPath/XQuery specification.


formatDecimal

public static java.lang.String formatDecimal(java.math.BigDecimal dec)
Format java.math.BigDecimal as needed for XPath/XQuery's xs:decimal. Specifically this means removing trailing fractional zeros, and a trailing decimal point. However, note that the XML Schema canonical representation does require a decimal point and at least one fractional digit.


print

public void print(java.lang.Object v)
Overrides:
print in class OutPort

writeObject

public void writeObject(java.lang.Object v)
Specified by:
writeObject in interface Consumer
Overrides:
writeObject in class PrintConsumer

ignoring

public boolean ignoring()
True if consumer is ignoring rest of element. The producer can use this information to skip ahead.

Specified by:
ignoring in interface Consumer
Overrides:
ignoring in class PrintConsumer

write

public void write(java.lang.String str,
                  int start,
                  int length)
Overrides:
write in class java.io.PrintWriter

write

public void write(char[] buf,
                  int off,
                  int len)
Specified by:
write in interface Consumer
Overrides:
write in class java.io.PrintWriter

writePosition

public void writePosition(AbstractSequence seq,
                          int ipos)
Description copied from interface: PositionConsumer
Consume a single position pair. This PositionConsumer may assume the sequence does no reference management; i.e. that copyPos is trivial and releasePos is a no-op. If that is not the case, use consume(TreePosition) instead.

Specified by:
writePosition in interface PositionConsumer

writeBaseUri

public void writeBaseUri(java.lang.Object uri)

beginComment

public void beginComment()

endComment

public void endComment()

writeComment

public void writeComment(java.lang.String chars)

writeComment

public void writeComment(char[] chars,
                         int offset,
                         int length)
Specified by:
writeComment in interface XConsumer

writeCDATA

public void writeCDATA(char[] chars,
                       int offset,
                       int length)
Specified by:
writeCDATA in interface XConsumer

writeProcessingInstruction

public void writeProcessingInstruction(java.lang.String target,
                                       char[] content,
                                       int offset,
                                       int length)
Specified by:
writeProcessingInstruction in interface XConsumer

consume

public void consume(SeqPosition position)
Description copied from interface: PositionConsumer
Consume node at current position. The caller may invalidate or change the position after consume returns, so if the consumer wants to save it, it needs to copy it.

Specified by:
consume in interface PositionConsumer