zongaro 2002/08/24 04:33:23
Modified: java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
DOMAdapter.java LoadDocument.java MultiDOM.java
java/src/org/apache/xalan/xsltc Tag: XSLTC_DTM DOM.java
java/src/org/apache/xalan/xsltc/compiler Tag: XSLTC_DTM
Constants.java
Log:
Eliminated use of DTDMonitor in building an XSLTC DOM object. Instead, the
nested DOMBuilderImpl classes of DOMImpl and SAXImpl now implement the
DTDHandler and DeclHandler SAX interfaces (and the ExtendedSAX interface now
extends them). With these changes, we now use DOMImpl to build an XSLTC DOM
from a DOMSource object, rather than using DOM2SAX to build the XSLTC DOM from
SAX events.
DTDMonitor was responsible for capturing information from SAX events relating
to unparsed entities and ID attribute values, and gave that information to the
translet, where it was ultimately stored. With this change, DOMImpl and
SAXImpl
are responsible for capturing this information; in the case of ID attribute
values, the information is again given back to the translet, which treats them
in the same manner as xsl:key elements. So the XSLTC DOM interface (and the
classes that implement it) now add a getUnparsedEntityURI method and a
getElementsWithID method.
Also, introduced getNodeNameX method to XSLTC DOM interface, which gives node
name as required by XPath semantics, rather than W3C DOM semantics.
Revision Changes Path
No revision
No revision
1.11.10.3 +17 -1
xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMAdapter.java
Index: DOMAdapter.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMAdapter.java,v
retrieving revision 1.11.10.2
retrieving revision 1.11.10.3
diff -u -r1.11.10.2 -r1.11.10.3
--- DOMAdapter.java 29 Jul 2002 00:01:27 -0000 1.11.10.2
+++ DOMAdapter.java 24 Aug 2002 11:33:23 -0000 1.11.10.3
@@ -71,6 +71,7 @@
import org.apache.xalan.xsltc.NodeIterator;
import org.apache.xalan.xsltc.TransletOutputHandler;
import org.apache.xalan.xsltc.TransletException;
+import org.apache.xalan.xsltc.runtime.Hashtable;
import org.apache.xml.dtm.*;
import org.apache.xml.dtm.ref.*;
@@ -283,6 +284,13 @@
return "";
return _domImpl.getNodeName(node);
}
+
+ public String getNodeNameX(final int node)
+ {
+ if (node == DTM.NULL)
+ return "";
+ return _domImpl.getNodeNameX(node);
+ }
public String getNamespaceName(final int node)
{
@@ -426,5 +434,13 @@
throws TransletException
{
return _domImpl.lookupNamespace(node, prefix);
+ }
+
+ public String getUnparsedEntityURI(String entity) {
+ return _domImpl.getUnparsedEntityURI(entity);
+ }
+
+ public Hashtable getElementsWithIDs() {
+ return _domImpl.getElementsWithIDs();
}
}
1.11.10.3 +9 -22
xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java
Index: LoadDocument.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java,v
retrieving revision 1.11.10.2
retrieving revision 1.11.10.3
diff -u -r1.11.10.2 -r1.11.10.3
--- LoadDocument.java 13 Aug 2002 21:21:13 -0000 1.11.10.2
+++ LoadDocument.java 24 Aug 2002 11:33:23 -0000 1.11.10.3
@@ -160,28 +160,15 @@
final SAXParser parser = factory.newSAXParser();
final XMLReader reader = parser.getXMLReader();
- // Create a DTD monitor and pass it to the XMLReader object
- DTDMonitor dtdMonitor = new DTDMonitor();
- dtdMonitor.handleDTD(reader);
-
// Set the DOM's DOM builder as the XMLReader's SAX2 content handler
- DTMManager dtmManager =
((DTMDefaultBase)((DOMAdapter)multiplexer.getMain()).getDOMImpl()).m_mgr;
- //DTMManager dtmManager = XSLTCDTMManager.newInstance(
- //
org.apache.xpath.objects.XMLStringFactoryImpl.getFactory());
- newdom = (SAXImpl)dtmManager.getDTM(new SAXSource(reader, new
InputSource(uri)), false, null, true, true);
- //newdom = new DOMImpl();
- // reader.setContentHandler(((SAXImpl)newdom).getBuilder());
-
+ DTMManager dtmManager =
+ ((DTMDefaultBase)((DOMAdapter)multiplexer.getMain())
+ .getDOMImpl()).m_mgr;
+ newdom = (SAXImpl)dtmManager.getDTM(
+ new SAXSource(reader, new InputSource(uri)),
+ false, null, true, true);
((SAXImpl)newdom).setDocumentURI(uri);
- //reader.parse(uri);
-
- // Set size of key/id indices
- translet.setIndexSize(newdom.getSize());
- // Create index for any ID attributes defined in the document DTD
- dtdMonitor.buildIdIndex(newdom, mask, translet);
- // Pass any unparsed URI elements to the translet
- translet.setUnparsedEntityURIs(dtdMonitor.getUnparsedEntityURIs());
}
// Wrap the DOM object in a DOM adapter and add to multiplexer
@@ -189,10 +176,10 @@
mask = multiplexer.addDOMAdapter(domAdapter);
// Create index for any key elements
- translet.buildKeys((DOM)newdom, null, null,
((SAXImpl)newdom).getDocument()/*DTMDefaultBase.ROOTNODE | mask*/);
+ translet.buildKeys(newdom, null, null, ((SAXImpl)newdom).getDocument());
// Return a singleton iterator containing the root node
- return new
SingletonIterator(((SAXImpl)newdom).getDocument()/*DTMDefaultBase.ROOTNODE |
mask*/, true);
+ return new SingletonIterator(((SAXImpl)newdom).getDocument(), true);
}
/**
1.16.10.3 +17 -1
xml-xalan/java/src/org/apache/xalan/xsltc/dom/MultiDOM.java
Index: MultiDOM.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/MultiDOM.java,v
retrieving revision 1.16.10.2
retrieving revision 1.16.10.3
diff -u -r1.16.10.2 -r1.16.10.3
--- MultiDOM.java 29 Jul 2002 00:01:27 -0000 1.16.10.2
+++ MultiDOM.java 24 Aug 2002 11:33:23 -0000 1.16.10.3
@@ -410,6 +410,12 @@
return "";
return _adapters[getDTMId(node)].getNodeName(node & CLR);
}
+
+ public String getNodeNameX(final int node) {
+ if (node == DTM.NULL)
+ return "";
+ return _adapters[getDTMId(node)].getNodeNameX(node & CLR);
+ }
public String getNamespaceName(final int node) {
if (node == DTM.NULL)
@@ -560,5 +566,15 @@
throws TransletException
{
return _adapters[node>>>24].lookupNamespace(node, prefix);
+ }
+
+ // %HZ% Does this method make any sense here???
+ public String getUnparsedEntityURI(String entity) {
+ return _adapters[0].getUnparsedEntityURI(entity);
+ }
+
+ // %HZ% Does this method make any sense here???
+ public Hashtable getElementsWithIDs() {
+ return _adapters[0].getElementsWithIDs();
}
}
No revision
No revision
1.9.10.3 +5 -1 xml-xalan/java/src/org/apache/xalan/xsltc/DOM.java
Index: DOM.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/DOM.java,v
retrieving revision 1.9.10.2
retrieving revision 1.9.10.3
diff -u -r1.9.10.2 -r1.9.10.3
--- DOM.java 29 Jul 2002 00:01:21 -0000 1.9.10.2
+++ DOM.java 24 Aug 2002 11:33:23 -0000 1.9.10.3
@@ -68,6 +68,7 @@
import org.apache.xml.dtm.*;
import org.apache.xml.dtm.ref.*;
+import org.apache.xalan.xsltc.runtime.Hashtable;
public interface DOM {
public final static int FIRST_TYPE = 0;
@@ -96,6 +97,7 @@
String value, boolean op);
public DTMAxisIterator orderNodes(DTMAxisIterator source, int node);
public String getNodeName(final int node);
+ public String getNodeNameX(final int node);
public String getNamespaceName(final int node);
public int getType(final int node);
public int getNamespaceType(final int node);
@@ -132,4 +134,6 @@
public TransletOutputHandler getOutputDomBuilder();
public int getNSType(int node);
public int getDocument();
+ public String getUnparsedEntityURI(String name);
+ public Hashtable getElementsWithIDs();
}
No revision
No revision
1.19.2.3 +7 -2
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Constants.java
Index: Constants.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Constants.java,v
retrieving revision 1.19.2.2
retrieving revision 1.19.2.3
diff -u -r1.19.2.2 -r1.19.2.3
--- Constants.java 29 Jul 2002 00:01:22 -0000 1.19.2.2
+++ Constants.java 24 Aug 2002 11:33:23 -0000 1.19.2.3
@@ -223,6 +223,8 @@
= "makeNode";
public static final String MAKE_NODE_LIST
= "makeNodeList";
+ public static final String GET_UNPARSED_ENTITY_URI
+ = "getUnparsedEntityURI";
public static final String STRING_TO_REAL
= "stringToReal";
public static final String STRING_TO_REAL_SIG
@@ -322,7 +324,7 @@
= "document";
public static final String GET_NODE_NAME
- = "getNodeName";
+ = "getNodeNameX";
public static final String CHARACTERSW
= "characters";
public static final String GET_CHILDREN
@@ -484,6 +486,9 @@
= "getNodeValueIterator";
public static final String GET_NODE_VALUE_ITERATOR_SIG
= "("+NODE_ITERATOR_SIG+"I"+STRING_SIG+"Z)"+NODE_ITERATOR_SIG;
+
+ public static final String GET_UNPARSED_ENTITY_URI_SIG
+ = "("+STRING_SIG+")"+STRING_SIG;
public static final int POSITION_INDEX = 2;
public static final int LAST_INDEX = 3;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]