sboag 00/12/31 02:05:21
Modified: java/src/org/apache/xalan/transformer ResultTreeHandler.java
Log:
Add a bunch of debugging code that can be turned on by setting
the DEBUG variable to true.
Make sure namespaces are empty strings and not null.
Have startPrefixMapping(String prefix, String uri) call
startPrefixMapping(prefix, uri, true) instead of
startPrefixMapping(prefix, uri, false), so that pended element flushing
will occur by default, which fixes a bug when it is called from TreeWalker
(which can only use the SAX interface).
Revision Changes Path
1.31 +54 -16
xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java
Index: ResultTreeHandler.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- ResultTreeHandler.java 2000/12/27 22:29:21 1.30
+++ ResultTreeHandler.java 2000/12/31 10:05:21 1.31
@@ -230,11 +230,15 @@
if (DEBUG)
{
- if (null != qse)
- System.out.println("(ResultTreeHandler - pended: " + qse.getURL() +
"#"
+ if (null != qse && qse.isPending)
+ System.out.println("(ResultTreeHandler#startElement - pended: " +
qse.getURL() + "#"
+ qse.getLocalName());
- System.out.println("ResultTreeHandler - startElement: " + ns + "#" +
localName);
+ System.out.println("ResultTreeHandler#startElement: " + ns + "#" +
localName);
+ if(null == ns)
+ {
+ (new RuntimeException(localName+" has a null
namespace!")).printStackTrace();
+ }
}
checkForSerializerSwitch(ns, localName);
@@ -243,7 +247,7 @@
if (!m_nsContextPushed)
{
if (DEBUG)
- System.out.println("push(startElement)");
+ System.out.println("ResultTreeHandler#startElement -
push(startElement)");
m_nsSupport.pushContext();
}
@@ -269,11 +273,11 @@
if (DEBUG)
{
QueuedStartElement qse = getQueuedElem();
- if (null != qse)
- System.out.println("(ResultTreeHandler - pended: " + qse.getURL() +
"#"
+ if (null != qse && qse.isPending)
+ System.out.println("(ResultTreeHandler#endElement - pended: " +
qse.getURL() + "#"
+ qse.getLocalName());
- System.out.println("ResultTreeHandler - endElement: " + ns + "#" +
localName);
+ System.out.println("ResultTreeHandler#endElement: " + ns + "#" +
localName);
}
flushPending(EVT_ENDELEMENT);
@@ -292,7 +296,7 @@
popEvent();
if (DEBUG)
- System.out.println("pop: " + localName);
+ System.out.println("ResultTreeHandler#startElement pop: " + localName);
m_nsSupport.popContext();
}
@@ -335,7 +339,7 @@
public void startPrefixMapping(String prefix, String uri)
throws org.xml.sax.SAXException
{
- startPrefixMapping(prefix, uri, false);
+ startPrefixMapping(prefix, uri, true);
}
/**
@@ -359,7 +363,7 @@
if (!m_nsContextPushed)
{
if (DEBUG)
- System.out.println("push(startPrefixMapping: " + prefix + ")");
+ System.out.println("ResultTreeHandler#startPrefixMapping
push(startPrefixMapping: " + prefix + ")");
m_nsSupport.pushContext();
@@ -375,8 +379,8 @@
{
if (DEBUG)
{
- System.out.println("Prefix: " + prefix);
- System.out.println("uri: " + uri);
+ System.out.println("ResultTreeHandler#startPrefixMapping Prefix: " +
prefix);
+ System.out.println("ResultTreeHandler#startPrefixMapping uri: " +
uri);
}
m_nsSupport.declarePrefix(prefix, uri);
@@ -420,6 +424,20 @@
/*if (m_startDoc.isPending
&& XMLCharacterRecognizer.isWhiteSpace(ch, start, length))
return;*/
+
+ if(DEBUG)
+ {
+ System.out.print("ResultTreeHandler#characters: ");
+ int n = start+length;
+ for (int i = start; i < n; i++)
+ {
+ if(Character.isWhitespace(ch[i]))
+ System.out.print("\\"+((int)ch[i]));
+ else
+ System.out.print(ch[i]);
+ }
+ System.out.println("");
+ }
flushPending(EVT_CHARACTERS);
m_contentHandler.characters(ch, start, length);
@@ -745,8 +763,21 @@
addNSDeclsToAttrs();
sendStartPrefixMappings();
- qe.flush();
+
+ if(DEBUG)
+ {
+ System.out.println("ResultTreeHandler#flushPending - start flush: "
+ +qe.getName());
+ }
+ qe.flush();
+
+ if(DEBUG)
+ {
+ System.out.println("ResultTreeHandler#flushPending - after flush,
isPending: "
+ +qe.isPending);
+ }
+
m_nsContextPushed = false;
}
}
@@ -978,7 +1009,7 @@
if (!srcURI.equalsIgnoreCase(desturi))
{
- this.startPrefixMapping(prefix, srcURI);
+ this.startPrefixMapping(prefix, srcURI, false);
}
}
}
@@ -1143,6 +1174,9 @@
if (!qe.nsDeclsHaveBeenAdded())
addNSDeclsToAttrs();
+
+ if(null == uri) // defensive, should not really need this.
+ uri = "";
try
{
@@ -1155,7 +1189,7 @@
}
if (DEBUG)
- System.out.println("Adding attr: " + localName + ", " + uri);
+ System.out.println("ResultTreeHandler#addAttribute Adding attr: " +
localName + ", " + uri);
if(!isDefinedNSDecl(rawName, value))
qe.addAttribute(uri, localName, rawName, type, value);
@@ -1241,8 +1275,12 @@
return;
DOMHelper helper = m_transformer.getXPathContext().getDOMHelper();
+
+ String ns = helper.getNamespaceOfNode(attr);
+ if(ns == null)
+ ns = "";
- addAttribute(helper.getNamespaceOfNode(attr),
+ addAttribute(ns,
helper.getLocalNameOfNode(attr), attr.getNodeName(),
"CDATA", attr.getValue());
} // end copyAttributeToTarget method