sboag 00/05/10 13:28:12
Modified: src/org/apache/xalan/xpath XNumber.java
src/org/apache/xalan/xpath/dtm DTM.java DTMProxy.java
src/org/apache/xalan/xpath/xdom XercesLiaison.java
src/org/apache/xalan/xslt ElemCallTemplate.java
ElemChoose.java ElemCopy.java ElemElement.java
ElemFallback.java ElemIf.java
ElemLiteralResult.java ElemTemplate.java
ElemTemplateElement.java StylesheetRoot.java
UnImplNode.java XSLProcessorContext.java
XSLTEngineImpl.java
Log:
Changed the DTM to implement XMLDocumentHandler,
XMLDocumentHandler.DTDHandler, and then call initHandlers(false, this, this);,
commented out getSchemaValidator in DTM, made Serializer calls in
StylesheetRoot call the factory and get the handler via getContentHandler().
Code changes only smoke tested.
Revision Changes Path
1.9 +1 -1 xml-xalan/src/org/apache/xalan/xpath/XNumber.java
Index: XNumber.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XNumber.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- XNumber.java 2000/03/06 20:13:29 1.8
+++ XNumber.java 2000/05/10 20:27:50 1.9
@@ -128,7 +128,7 @@
// java.text.NumberFormat formatter
// = java.text.NumberFormat.getNumberInstance();
- java.text.DecimalFormat formatter = new
java.text.DecimalFormat("0.####################");
+ java.text.DecimalFormat formatter = new
java.text.DecimalFormat("0.##################");
String s = formatter.format(m_val);
1.18 +56 -20 xml-xalan/src/org/apache/xalan/xpath/dtm/DTM.java
Index: DTM.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/DTM.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- DTM.java 2000/03/29 03:51:55 1.17
+++ DTM.java 2000/05/10 20:27:54 1.18
@@ -66,6 +66,8 @@
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import java.io.IOException;
+import org.apache.xerces.framework.XMLDocumentHandler;
+import org.apache.xerces.framework.XMLContentSpec;
import org.apache.xerces.readers.XMLEntityHandler;
import org.apache.xerces.dom.DocumentTypeImpl;
@@ -97,7 +99,8 @@
* @see DTMProxy
*/
public class DTM
- extends org.apache.xerces.framework.XMLParser implements Runnable
+ extends org.apache.xerces.framework.XMLParser implements Runnable,
+ XMLDocumentHandler, XMLDocumentHandler.DTDHandler
{
// COMPILATION CONTROL: Debugging features
final boolean DISABLE = false;
@@ -204,9 +207,10 @@
public DTM()
{
super();
+ initHandlers(false, this, this);
m_problemListener = new
org.apache.xalan.xpath.xml.ProblemListenerDefault();
- setSendCharDataAsCharArray(false);
+ // setSendCharDataAsCharArray(false);
}
/**
@@ -217,18 +221,21 @@
public DTM(ProblemListener listener)
{
super();
+ initHandlers(false, this, this);
m_problemListener = listener;
- setSendCharDataAsCharArray(false);
+ // setSendCharDataAsCharArray(false);
}
/** Returns the XML Schema validator. */
+ /*
protected org.apache.xerces.validators.schema.XSchemaValidator
getSchemaValidator()
{
if (fSchemaValidator == null)
fSchemaValidator = new NullSchemaValidator(fStringPool,
fErrorReporter, fEntityHandler);
return fSchemaValidator;
}
+ */
boolean m_throwNewError = true;
@@ -346,6 +353,27 @@
* but also has the side effect of switching DTM into its XML4J-aware
* mode.
*/
+ public final void startDocument()
+ {
+ XML4J = true;
+ // Initialize the doc -- no parent, no next-sib
+ nodes.writeSlot(0,Node.DOCUMENT_NODE,-1,-1,0);
+ document = getNode(0);
+ // Make sure nobody is still waiting
+ synchronized (this)
+ {
+ if(DEBUG_WAITS)
+ System.out.println("startDocument(1): "+document);
+ notify();
+ }
+ }
+
+ /**
+ * XMLDocumentHandler API: Start-of-document recieved.
+ * Much like the SAX startDocument() and setDocumentLocator() calls,
+ * but also has the side effect of switching DTM into its XML4J-aware
+ * mode.
+ */
public final void startDocument(int versionIndex,
int encodingIndex,
int standAloneIndex)
@@ -924,6 +952,28 @@
//
/**
+ * Signal the XML declaration of a document
+ *
+ * @param version the handle in the string pool for the version number
+ * @param encoding the handle in the string pool for the encoding
+ * @param standalong the handle in the string pool for the standalone value
+ * @exception java.lang.Exception
+ */
+ public void xmlDecl(int version, int encoding, int standalone)
+ throws Exception
+ {
+ }
+
+ /**
+ * Signal the Text declaration of an external entity.
+ *
+ * @exception java.lang.Exception
+ */
+ public void textDecl(int version, int encoding) throws Exception
+ {
+ }
+
+ /**
* This function will be called when a <!DOCTYPE...> declaration is
* encountered.
*/
@@ -946,14 +996,13 @@
/**
* <!ELEMENT Name contentspec>
*/
- public final void elementDecl(int elementTypeIndex,
-
org.apache.xerces.framework.XMLValidator.ContentSpec contentModel)
+ public final void elementDecl(int elementType, XMLContentSpec contentSpec)
throws Exception
{
if (DEBUG)
{
- System.out.println("elementDecl(" +
fStringPool.toString(elementTypeIndex) + ", " +
- contentModel + ")");
+ System.out.println("elementDecl(" + fStringPool.toString(elementType)
+ ", " +
+ contentSpec + ")");
}
}
@@ -2072,19 +2121,6 @@
return fCreateEntityReferenceNodes;
}
- class NullSchemaValidator extends
org.apache.xerces.validators.schema.XSchemaValidator
- {
- public NullSchemaValidator(org.apache.xerces.utils.StringPool
stringPool,
- org.apache.xerces.framework.XMLErrorReporter
errorReporter,
- XMLEntityHandler entityHandler)
- {
- super(stringPool, errorReporter, entityHandler);
- }
-
- public final void loadSchema(String uri) {}
- public final void loadSchema(InputSource is) {}
- }
-
//==========================================================
// SECTION: Diagnostics
//==========================================================
1.10 +12 -0 xml-xalan/src/org/apache/xalan/xpath/dtm/DTMProxy.java
Index: DTMProxy.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/DTMProxy.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DTMProxy.java 2000/03/06 20:13:41 1.9
+++ DTMProxy.java 2000/05/10 20:27:54 1.10
@@ -287,7 +287,19 @@
{
return new DTMProxyMap(dtm,node);
}
+
+ public boolean hasAttribute(String name)
+ {
+ throw new DTMException(DTMException.NOT_SUPPORTED_ERR);
+ // return false;
+ }
+ public boolean hasAttributeNS(String name, String x)
+ {
+ throw new DTMException(DTMException.NOT_SUPPORTED_ERR);
+ // return false;
+ }
+
/** @see org.w3c.dom.Node */
public final Document getOwnerDocument()
{
1.19 +2 -30
xml-xalan/src/org/apache/xalan/xpath/xdom/XercesLiaison.java
Index: XercesLiaison.java
===================================================================
RCS file:
/home/cvs/xml-xalan/src/org/apache/xalan/xpath/xdom/XercesLiaison.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- XercesLiaison.java 2000/03/16 17:33:35 1.18
+++ XercesLiaison.java 2000/05/10 20:27:58 1.19
@@ -281,10 +281,12 @@
}
catch(SAXException e)
{
+ /*
if(null != parser)
throw new
SAXException(XSLMessages.createXPATHMessage(XPATHErrorResources.ER_XERCES_PARSE_ERROR_DETAILS,
new Object[]{parser.getSystemId(), Integer.toString(parser.getLineNumber())}),
e); //"XercesLiaison.parse error: SystemID - "+
//parser.getSystemId()+" line - "+parser.getLineNumber(), e);
else
+ */
throw new
SAXException(XSLMessages.createXPATHMessage(XPATHErrorResources.ER_XERCES_PARSE_ERROR,
null), e); //"XercesLiaison.parse error", e);
}
}
@@ -390,39 +392,9 @@
? ((AttrImpl)node).getElement() : node.getParentNode();
}
- /**
- * Override schema validation until they stop trying to resolve a
namespace
- * to the schema.
- */
- class NullSchemaValidator extends
org.apache.xerces.validators.schema.XSchemaValidator
- {
- public NullSchemaValidator(org.apache.xerces.utils.StringPool stringPool,
- org.apache.xerces.framework.XMLErrorReporter
errorReporter,
- org.apache.xerces.readers.XMLEntityHandler
entityHandler)
- {
- super(stringPool, errorReporter, entityHandler);
- }
-
- public final void loadSchema(String uri) {}
- }
-
class MyParser extends DOMParser
{
- /** Returns the XML Schema validator. */
- protected org.apache.xerces.validators.schema.XSchemaValidator
getSchemaValidator()
- {
- if(getUseValidation())
- {
- return super.getSchemaValidator();
- }
- else
- {
- if (fSchemaValidator == null)
- fSchemaValidator = new NullSchemaValidator(fStringPool,
fErrorReporter, fEntityHandler);
- return fSchemaValidator;
- }
- }
}
}
1.14 +1 -1 xml-xalan/src/org/apache/xalan/xslt/ElemCallTemplate.java
Index: ElemCallTemplate.java
===================================================================
RCS file:
/home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemCallTemplate.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- ElemCallTemplate.java 2000/03/29 03:51:57 1.13
+++ ElemCallTemplate.java 2000/05/10 20:28:01 1.14
@@ -136,7 +136,7 @@
vars.setCurrentStackFrameIndex(vars.size());
try
{
- // template.executeChildren(processor, sourceTree, sourceNode, mode);
+ // template.transformChildren(processor, sourceTree, sourceNode,
mode);
m_template.execute(processor, sourceTree, sourceNode, mode);
}
finally
1.9 +2 -2 xml-xalan/src/org/apache/xalan/xslt/ElemChoose.java
Index: ElemChoose.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemChoose.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ElemChoose.java 2000/03/02 10:23:00 1.8
+++ ElemChoose.java 2000/05/10 20:28:01 1.9
@@ -129,7 +129,7 @@
if((null != test) && test.bool())
{
- when.executeChildren(processor, sourceTree,
+ when.transformChildren(processor, sourceTree,
sourceNode, mode);
return;
}
@@ -138,7 +138,7 @@
{
found = true;
// xsl:otherwise
- node.executeChildren(processor, sourceTree,
+ node.transformChildren(processor, sourceTree,
sourceNode, mode);
return;
}
1.6 +2 -2 xml-xalan/src/org/apache/xalan/xslt/ElemCopy.java
Index: ElemCopy.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemCopy.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ElemCopy.java 2000/03/02 10:23:00 1.5
+++ ElemCopy.java 2000/05/10 20:28:01 1.6
@@ -117,7 +117,7 @@
{
super.execute(processor, sourceTree, sourceNode, mode);
processor.copySourceNSAttrs(sourceNode,
processor.m_pendingAttributes);
- executeChildren(processor, sourceTree, sourceNode, mode);
+ transformChildren(processor, sourceTree, sourceNode, mode);
processor.m_resultTreeHandler.endElement(sourceNode.getNodeName());
}
else
@@ -142,7 +142,7 @@
mode,
this));
}
- executeChildren(processor, sourceTree, sourceNode, mode);
+ transformChildren(processor, sourceTree, sourceNode, mode);
}
}
1.12 +1 -1 xml-xalan/src/org/apache/xalan/xslt/ElemElement.java
Index: ElemElement.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemElement.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ElemElement.java 2000/03/02 10:23:01 1.11
+++ ElemElement.java 2000/05/10 20:28:02 1.12
@@ -198,7 +198,7 @@
// and stylesheet root declarations).
processResultNS(processor);
- executeChildren(processor, sourceTree,
+ transformChildren(processor, sourceTree,
sourceNode, mode);
}
// Now end the element if name was valid
1.7 +1 -1 xml-xalan/src/org/apache/xalan/xslt/ElemFallback.java
Index: ElemFallback.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemFallback.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ElemFallback.java 2000/03/29 03:51:57 1.6
+++ ElemFallback.java 2000/05/10 20:28:02 1.7
@@ -118,7 +118,7 @@
{
super.execute(processor, sourceTree, sourceNode, mode);
// XPathSupport execContext = processor.getXMLProcessorLiaison();
- executeChildren(processor, sourceTree,
+ transformChildren(processor, sourceTree,
sourceNode, mode);
}
}
1.6 +1 -1 xml-xalan/src/org/apache/xalan/xslt/ElemIf.java
Index: ElemIf.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemIf.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ElemIf.java 2000/03/03 20:22:34 1.5
+++ ElemIf.java 2000/05/10 20:28:02 1.6
@@ -134,7 +134,7 @@
}
if(test.bool())
{
- executeChildren(processor, sourceTree,
+ transformChildren(processor, sourceTree,
sourceNode, mode);
}
}
1.21 +1 -1
xml-xalan/src/org/apache/xalan/xslt/ElemLiteralResult.java
Index: ElemLiteralResult.java
===================================================================
RCS file:
/home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemLiteralResult.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- ElemLiteralResult.java 2000/03/29 03:51:57 1.20
+++ ElemLiteralResult.java 2000/05/10 20:28:02 1.21
@@ -251,7 +251,7 @@
// Now process all the elements in this subtree
// TODO: Process m_extensionElementPrefixes && m_attributeSetsNames
- executeChildren(processor, sourceTree, sourceNode, mode);
+ transformChildren(processor, sourceTree, sourceNode, mode);
processor.m_resultTreeHandler.endElement (m_qname);
}
1.9 +1 -1 xml-xalan/src/org/apache/xalan/xslt/ElemTemplate.java
Index: ElemTemplate.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemTemplate.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ElemTemplate.java 2000/03/03 20:22:34 1.8
+++ ElemTemplate.java 2000/05/10 20:28:02 1.9
@@ -142,7 +142,7 @@
super.execute(processor, sourceTree, sourceNode, mode);
if(null != sourceNode)
{
- executeChildren(processor, sourceTree, sourceNode, mode);
+ transformChildren(processor, sourceTree, sourceNode, mode);
}
else // if(null == sourceNode)
{
1.33 +3 -3
xml-xalan/src/org/apache/xalan/xslt/ElemTemplateElement.java
Index: ElemTemplateElement.java
===================================================================
RCS file:
/home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemTemplateElement.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- ElemTemplateElement.java 2000/04/11 19:33:05 1.32
+++ ElemTemplateElement.java 2000/05/10 20:28:03 1.33
@@ -637,7 +637,7 @@
* @exception SAXException Might be thrown from the document() function,
or
* from xsl:include or xsl:import.
*/
- public void executeChildren(XSLTEngineImpl processor,
+ public void transformChildren(XSLTEngineImpl processor,
Node sourceTree,
Node sourceNode,
QName mode)
@@ -716,7 +716,7 @@
MutableAttrListImpl savedPendingAttributes =
processor.m_pendingAttributes;
processor.m_pendingAttributes = new MutableAttrListImpl();
- executeChildren(processor, sourceTree, sourceNode, mode);
+ transformChildren(processor, sourceTree, sourceNode, mode);
processor.m_pendingElementName = savedPendingName;
processor.m_pendingAttributes = savedPendingAttributes;
@@ -1191,7 +1191,7 @@
template);
m_stylesheet.m_stylesheetRoot.fireTraceEvent(te);
}
- template.executeChildren(transformContext, sourceTree, child,
mode);
+ template.transformChildren(transformContext, sourceTree, child,
mode);
}
}
}
1.35 +23 -26 xml-xalan/src/org/apache/xalan/xslt/StylesheetRoot.java
Index: StylesheetRoot.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/StylesheetRoot.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- StylesheetRoot.java 2000/04/24 15:07:35 1.34
+++ StylesheetRoot.java 2000/05/10 20:28:03 1.35
@@ -481,19 +481,13 @@
* @return A compatible SAX serializer
*/
public DocumentHandler makeSAXSerializer( Writer writer, OutputFormat
format )
+ throws IOException
{
DocumentHandler handler;
- if(m_useXercesSerializers)
+ if ( format == null )
{
- handler = new XMLSerializer(writer, format);
- //handler = Serializer.makeSAXSerializer(writer, format);
- }
- else if ( format == null )
- {
format = new OutputFormat( "xml", "UTF-8", false );
- FormatterToXML serializer = new FormatterToXML();
- serializer.init( writer, format );
- handler = serializer;
+ handler = null;
}
else if ( format.getMethod().equalsIgnoreCase( "html" ) )
{
@@ -511,15 +505,17 @@
{
handler = new FormatterToText(writer);
}
- else if ( format.getMethod().equalsIgnoreCase( "xhtml" ) )
+ else
{
- handler = new XMLSerializer(writer, format);
- //handler = Serializer.makeSAXSerializer(writer, format);
+ handler = null;
}
- else
+
+ if(null == handler)
{
- handler = new XMLSerializer(writer, format);
- //handler = Serializer.makeSAXSerializer(writer, format);
+ String method = format.getMethod();
+ SerializerFactory factory =
SerializerFactory.getSerializerFactory(method);
+ Serializer serializer = factory.makeSerializer(writer, format);
+ handler = serializer.asDocumentHandler();
}
return handler;
@@ -534,7 +530,7 @@
* @return A compatible SAX serializer
*/
public DocumentHandler getSAXSerializer( OutputStream ostream )
- throws UnsupportedEncodingException
+ throws UnsupportedEncodingException, IOException
{
return makeSAXSerializer(ostream, getOutputFormat());
}
@@ -549,20 +545,13 @@
* @return A compatible SAX serializer
*/
public DocumentHandler makeSAXSerializer( OutputStream ostream,
OutputFormat format )
- throws UnsupportedEncodingException
+ throws UnsupportedEncodingException, IOException
{
DocumentHandler handler;
- if(m_useXercesSerializers)
- {
- handler = new XMLSerializer(ostream, format);
- //handler = Serializer.makeSAXSerializer(ostream, format);
- }
- else if ( format == null )
+ if ( format == null )
{
format = new OutputFormat( "xml", "UTF-8", false );
- FormatterToXML serializer = new FormatterToXML();
- serializer.init( ostream, format );
- handler = serializer;
+ handler = null;
}
else if ( format.getMethod().equalsIgnoreCase( "html" ) )
{
@@ -613,6 +602,14 @@
{
handler = new XMLSerializer(ostream, format);
//handler = Serializer.makeSAXSerializer(ostream, format);
+ }
+
+ if(null == handler)
+ {
+ String method = format.getMethod();
+ SerializerFactory factory =
SerializerFactory.getSerializerFactory(method);
+ Serializer serializer = factory.makeSerializer(ostream, format);
+ handler = serializer.asDocumentHandler();
}
return handler;
1.8 +13 -0 xml-xalan/src/org/apache/xalan/xslt/UnImplNode.java
Index: UnImplNode.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/UnImplNode.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- UnImplNode.java 2000/03/02 10:23:08 1.7
+++ UnImplNode.java 2000/05/10 20:28:03 1.8
@@ -234,6 +234,19 @@
error(XSLTErrorResources.ER_FUNCTION_NOT_SUPPORTED); //"getAttribute not
supported!");
return null;
}
+
+ public boolean hasAttribute(String name)
+ {
+ error(XSLTErrorResources.ER_FUNCTION_NOT_SUPPORTED); //"hasAttribute not
supported!");
+ return false;
+ }
+
+ public boolean hasAttributeNS(String name, String x)
+ {
+ error(XSLTErrorResources.ER_FUNCTION_NOT_SUPPORTED); //"hasAttributeNS
not supported!");
+ return false;
+ }
+
/** Unimplemented. */
public NodeList getElementsByTagNameNS(String namespaceURI,
1.4 +1 -1
xml-xalan/src/org/apache/xalan/xslt/XSLProcessorContext.java
Index: XSLProcessorContext.java
===================================================================
RCS file:
/home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLProcessorContext.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XSLProcessorContext.java 2000/03/02 10:23:08 1.3
+++ XSLProcessorContext.java 2000/05/10 20:28:03 1.4
@@ -90,7 +90,7 @@
* user can call to process the transformation of a node but not
* serialize out automatically. ????????????????
*
- * Does ElemTemplateElement.executeChildren() cut it? It sends
+ * Does ElemTemplateElement.transformChildren() cut it? It sends
* results out to the stream directly, so that could be a problem.
*/
}
1.62 +2 -2 xml-xalan/src/org/apache/xalan/xslt/XSLTEngineImpl.java
Index: XSLTEngineImpl.java
===================================================================
RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLTEngineImpl.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- XSLTEngineImpl.java 2000/03/29 03:51:58 1.61
+++ XSLTEngineImpl.java 2000/05/10 20:28:03 1.62
@@ -2092,7 +2092,7 @@
m_flistener = new FormatterToDOM(getDOMFactory(), resultFragment);
- templateParent.executeChildren(this, sourceTree, sourceNode, mode);
+ templateParent.transformChildren(this, sourceTree, sourceNode, mode);
// flushPending();
this.m_pendingElementName = savedPendingName;
@@ -2138,7 +2138,7 @@
m_pendingAttributes = new MutableAttrListImpl();
m_flistener = flistener;
- templateParent.executeChildren(this, sourceTree, sourceNode, mode);
+ templateParent.transformChildren(this, sourceTree, sourceNode, mode);
flushPending();
m_flistener = savedFormatterListener;