You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by sa...@apache.org on 2002/06/04 22:55:13 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/trax TransformerHandlerImpl.java TransformerImpl.java
santiagopg 2002/06/04 13:55:13
Modified: java/src/org/apache/xalan/xsltc/trax
TransformerHandlerImpl.java TransformerImpl.java
Log:
Fixed problems with id/key.
Revision Changes Path
1.10 +61 -26 xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java
Index: TransformerHandlerImpl.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- TransformerHandlerImpl.java 4 Jun 2002 15:46:36 -0000 1.9
+++ TransformerHandlerImpl.java 4 Jun 2002 20:55:13 -0000 1.10
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: TransformerHandlerImpl.java,v 1.9 2002/06/04 15:46:36 santiagopg Exp $
+ * @(#)$Id: TransformerHandlerImpl.java,v 1.10 2002/06/04 20:55:13 santiagopg Exp $
*
* The Apache Software License, Version 1.1
*
@@ -63,6 +63,7 @@
package org.apache.xalan.xsltc.trax;
import org.xml.sax.*;
+import org.xml.sax.ext.DeclHandler;
import javax.xml.transform.*;
import javax.xml.transform.sax.*;
@@ -77,7 +78,7 @@
/**
* Implementation of a JAXP1.1 TransformerHandler
*/
-public class TransformerHandlerImpl implements TransformerHandler {
+public class TransformerHandlerImpl implements TransformerHandler, DeclHandler {
private TransformerImpl _transformer;
private AbstractTranslet _translet = null;
@@ -102,6 +103,9 @@
// Create a DOMBuilder object and get the handler
_dom = new DOMImpl();
_handler = _dom.getBuilder();
+
+ // Create a new DTD monitor
+ _dtd = new DTDMonitor();
}
/**
@@ -192,12 +196,12 @@
public void endDocument() throws SAXException {
// Signal to the DOMBuilder that the document is complete
_handler.endDocument();
- // Pass unparsed entity declarations (if any) to the translet
- if (_dtd != null) _translet.setDTDMonitor(_dtd);
+
// Run the transformation now if we have a reference to a Result object
if (_result != null) {
try {
_transformer.setDOM(_dom);
+ _transformer.setDTDMonitor(_dtd); // for id/key
_transformer.transform(null, _result);
}
catch (TransformerException e) {
@@ -308,28 +312,6 @@
}
/**
- * Implements org.xml.sax.DTDHandler.notationDecl()
- * End the scope of a prefix-URI Namespace mapping.
- * We do not handle this method, and the input is quietly ignored.
- */
- public void notationDecl(String name, String publicId, String systemId) {
- // Not handled by DTDMonitor - ignored
- }
-
- /**
- * Implements org.xml.sax.DTDHandler.unparsedEntityDecl()
- * End the scope of a prefix-URI Namespace mapping.
- */
- public void unparsedEntityDecl(String name, String publicId,
- String systemId, String notationName)
- throws SAXException
- {
- // Create new contained for unparsed entities
- if (_dtd == null) _dtd = new DTDMonitor();
- _dtd.unparsedEntityDecl(name, publicId, systemId, notationName);
- }
-
- /**
* Implements org.xml.sax.ext.LexicalHandler.startDTD()
*/
public void startDTD(String name, String publicId, String systemId)
@@ -359,4 +341,57 @@
_handler.endEntity(name);
}
+ /**
+ * Implements org.xml.sax.DTDHandler.unparsedEntityDecl()
+ */
+ public void unparsedEntityDecl(String name, String publicId,
+ String systemId, String notationName) throws SAXException
+ {
+ _dtd.unparsedEntityDecl(name, publicId, systemId, notationName);
+ }
+
+ /**
+ * Implements org.xml.sax.DTDHandler.notationDecl()
+ */
+ public void notationDecl(String name, String publicId, String systemId)
+ throws SAXException
+ {
+ _dtd.notationDecl(name, publicId, systemId);
+ }
+
+ /**
+ * Implements org.xml.sax.ext.DeclHandler.attributeDecl()
+ */
+ public void attributeDecl(String eName, String aName, String type,
+ String valueDefault, String value) throws SAXException
+ {
+ _dtd.attributeDecl(eName, aName, type, valueDefault, value);
+ }
+
+ /**
+ * Implements org.xml.sax.ext.DeclHandler.elementDecl()
+ */
+ public void elementDecl(String name, String model)
+ throws SAXException
+ {
+ _dtd.elementDecl(name, model);
+ }
+
+ /**
+ * Implements org.xml.sax.ext.DeclHandler.externalEntityDecl()
+ */
+ public void externalEntityDecl(String name, String publicId, String systemId)
+ throws SAXException
+ {
+ _dtd.externalEntityDecl(name, publicId, systemId);
+ }
+
+ /**
+ * Implements org.xml.sax.ext.DeclHandler.externalEntityDecl()
+ */
+ public void internalEntityDecl(String name, String value)
+ throws SAXException
+ {
+ _dtd.internalEntityDecl(name, value);
+ }
}
1.42 +19 -10 xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java
Index: TransformerImpl.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- TransformerImpl.java 28 May 2002 19:35:27 -0000 1.41
+++ TransformerImpl.java 4 Jun 2002 20:55:13 -0000 1.42
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: TransformerImpl.java,v 1.41 2002/05/28 19:35:27 santiagopg Exp $
+ * @(#)$Id: TransformerImpl.java,v 1.42 2002/06/04 20:55:13 santiagopg Exp $
*
* The Apache Software License, Version 1.1
*
@@ -131,6 +131,8 @@
// Pre-set DOMImpl to use as input (used only with TransformerHandlerImpl)
private DOMImpl _dom = null;
+ private DTDMonitor _dtdMonitor = null;
+
private final static String LEXICAL_HANDLER_PROPERTY =
"http://xml.org/sax/properties/lexical-handler";
private static final String NAMESPACE_FEATURE =
@@ -148,7 +150,8 @@
protected TransformerImpl(Translet translet, boolean experimentalOutput) {
_translet = (AbstractTranslet)translet;
_properties = createOutputProperties();
- _experimentalOutput = experimentalOutput;
+ // _experimentalOutput = experimentalOutput;
+ _experimentalOutput = true;
}
/**
@@ -432,18 +435,19 @@
}
/**
+ * Set the internal DOMImpl that will be used for the next transformation
+ */
+ protected void setDTDMonitor(DTDMonitor dtdMonitor) {
+ _dtdMonitor = dtdMonitor;
+ }
+
+ /**
* Builds an internal DOM from a TrAX Source object
*/
private DOMImpl getDOM(Source source, int mask)
- throws TransformerException {
+ throws TransformerException
+ {
try {
- // Use the pre-defined DOM if present
- if (_dom != null) {
- DOMImpl dom = _dom;
- _dom = null; // use only once, so reset to 'null'
- return(dom);
- }
-
DOMImpl dom = null;
DTDMonitor dtd = null;
@@ -574,6 +578,11 @@
final XSLTCSource xsltcsrc = (XSLTCSource)source;
dtd = xsltcsrc.getDTD();
dom = xsltcsrc.getDOM();
+ }
+ // DOM already set via a call to setDOM()
+ else if (_dom != null) {
+ dtd = _dtdMonitor; // must be set via setDTDMonitor()
+ dom = _dom; _dom = null; // use only once, so reset to 'null'
}
else {
return null;
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org