You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mo...@apache.org on 2001/08/13 17:25:56 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java DefaultSAXOutputHandler.java TextOutput.java
morten 01/08/13 08:25:56
Modified: java/src/org/apache/xalan/xsltc/runtime
AbstractTranslet.java DefaultSAXOutputHandler.java
TextOutput.java
Log:
A start on a fix for output DOCTYPE declarations based on the attributes
of the <xsl:output> element. I also added a fix for bug 2863, to prevent
us from outputting namespace delcaration that point a prefix to the null
URI (such as 'xmlns:blob=""').
PR: bugzilla 2863
Obtained from: n/a
Submitted by: morten@apache.org
Reviewed by: morten@apache.org
Revision Changes Path
1.17 +4 -4 xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java
Index: AbstractTranslet.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- AbstractTranslet.java 2001/08/07 10:38:44 1.16
+++ AbstractTranslet.java 2001/08/13 15:25:56 1.17
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: AbstractTranslet.java,v 1.16 2001/08/07 10:38:44 morten Exp $
+ * @(#)$Id: AbstractTranslet.java,v 1.17 2001/08/13 15:25:56 morten Exp $
*
* The Apache Software License, Version 1.1
*
@@ -542,7 +542,7 @@
if (_standalone != null) handler.setStandalone(_standalone);
if (_omitHeader) handler.omitHeader(true);
if (_indent) handler.setIndent(_indent);
- if ((_doctypePublic != null) && (_doctypeSystem != null))
+ if (_doctypeSystem != null)
handler.setDoctype(_doctypeSystem, _doctypePublic);
}
// Transfer all output settings relevant to HTML output
@@ -552,7 +552,7 @@
handler.setIndent(_indent);
else
handler.setIndent(true);
- if ((_doctypePublic != null) && (_doctypeSystem != null))
+ if (_doctypeSystem != null)
handler.setDoctype(_doctypeSystem, _doctypePublic);
if (_mediaType != null) handler.setMediaType(_mediaType);
}
@@ -569,7 +569,7 @@
if (_standalone != null) handler.setStandalone(_standalone);
if (_omitHeader) handler.omitHeader(true);
if (_indent) handler.setIndent(_indent);
- if ((_doctypePublic != null) && (_doctypeSystem != null))
+ if (_doctypeSystem != null)
handler.setDoctype(_doctypeSystem, _doctypePublic);
}
}
1.12 +22 -4 xml-xalan/java/src/org/apache/xalan/xsltc/runtime/DefaultSAXOutputHandler.java
Index: DefaultSAXOutputHandler.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/DefaultSAXOutputHandler.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- DefaultSAXOutputHandler.java 2001/08/01 11:52:59 1.11
+++ DefaultSAXOutputHandler.java 2001/08/13 15:25:56 1.12
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: DefaultSAXOutputHandler.java,v 1.11 2001/08/01 11:52:59 morten Exp $
+ * @(#)$Id: DefaultSAXOutputHandler.java,v 1.12 2001/08/13 15:25:56 morten Exp $
*
* The Apache Software License, Version 1.1
*
@@ -74,8 +74,9 @@
import org.xml.sax.Locator;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
+import org.xml.sax.ext.DeclHandler;
-public class DefaultSAXOutputHandler implements ContentHandler {
+public class DefaultSAXOutputHandler implements ContentHandler, DeclHandler {
// The output writer
private Writer _writer;
@@ -376,8 +377,8 @@
/**
* SAX2: Receive notification of a processing instruction.
*/
- public void processingInstruction(String target, String data) throws
- SAXException {
+ public void processingInstruction(String target, String data)
+ throws SAXException {
try {
if (_startTagOpen) closeStartTag(true);
_writer.write(BEGPI);
@@ -423,6 +424,23 @@
public void endPrefixMapping(String prefix) {
// Do nothing
}
+
+ public void attributeDecl(java.lang.String eName, java.lang.String aName, java.lang.String type, java.lang.String valueDefault, java.lang.String value) {
+
+ }
+
+ public void elementDecl(java.lang.String name, java.lang.String model) {
+
+ }
+
+ public void externalEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId) {
+
+ }
+
+ public void internalEntityDecl(java.lang.String name, java.lang.String value) {
+
+ }
+
/**
* Adds a newline in the output stream and indents to correct level
1.18 +33 -3 xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java
Index: TextOutput.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- TextOutput.java 2001/08/07 10:33:28 1.17
+++ TextOutput.java 2001/08/13 15:25:56 1.18
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: TextOutput.java,v 1.17 2001/08/07 10:33:28 morten Exp $
+ * @(#)$Id: TextOutput.java,v 1.18 2001/08/13 15:25:56 morten Exp $
*
* The Apache Software License, Version 1.1
*
@@ -67,9 +67,11 @@
import java.io.*;
import java.util.Stack;
-import org.apache.xalan.xsltc.*;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
+import org.xml.sax.ext.DeclHandler;
+
+import org.apache.xalan.xsltc.*;
public final class TextOutput implements TransletOutputHandler {
@@ -85,6 +87,8 @@
private int _outputType = UNKNOWN;
private String _encoding;
private String _mediaType = "text/html";
+ private String _doctypeSystem = null;
+ private String _doctypePublic = null;
private boolean _escapeChars = false;
private boolean _startTagOpen = false;
@@ -132,6 +136,7 @@
// Reference to the SAX2 handler that consumes this handler's output
private ContentHandler _saxHandler;
+ private DeclHandler _declHandler;
/**
* Creates a new translet output post-processor
@@ -159,6 +164,22 @@
}
/**
+ * Creates a new translet output post-processor
+ *
+ * @param handler A SAX2 handler to consume the generated SAX events
+ * @param encoding The default encoding to use (set in <xsl:output>)
+ * @throws IOException
+ */
+ public TextOutput(ContentHandler saxHandler, DeclHandler declHandler,
+ String encoding)
+ throws IOException {
+ _saxHandler = saxHandler;
+ _declHandler = declHandler;
+ init();
+ _encoding = encoding;
+ }
+
+ /**
* Initialise global variables
*/
private void init() throws IOException {
@@ -457,6 +478,12 @@
setTypeInternal(XML);
}
+ // Handle document type declaration (for first element only)
+ if ((_doctypeSystem != null) && (_declHandler != null)) {
+ // _declHandler.something(something);
+ _doctypeSystem = null;
+ }
+
_depth++;
_elementName = elementName;
_attributes.clear();
@@ -647,6 +674,8 @@
if (prefix.equals(XML_PREFIX)) return;
+ if ((!prefix.equals(EMPTYSTRING)) && (uri.equals(EMPTYSTRING))) return;
+
Stack stack;
// Get the stack that contains URIs for the specified prefix
if ((stack = (Stack)_namespaces.get(prefix)) == null) {
@@ -798,7 +827,8 @@
* Set the output document system/public identifiers
*/
public void setDoctype(String system, String pub) {
- // TODO - pass these to the SAX output handler - how?
+ _doctypeSystem = system;
+ _doctypePublic = pub;
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org