You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by zo...@apache.org on 2002/08/24 13:33:39 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/dom SAXImpl.java
zongaro 2002/08/24 04:33:39
Modified: java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
SAXImpl.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).
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.
Finally, one bug fix: the NamespaceIterator created in lookupNamespace wasn't
getting its setStartNode method called to specify the starting point from which
to look up namespace nodes.
Revision Changes Path
No revision
No revision
1.1.2.5 +75 -4 xml-xalan/java/src/org/apache/xalan/xsltc/dom/Attic/SAXImpl.java
Index: SAXImpl.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/Attic/SAXImpl.java,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -r1.1.2.4 -r1.1.2.5
--- SAXImpl.java 29 Jul 2002 00:01:27 -0000 1.1.2.4
+++ SAXImpl.java 24 Aug 2002 11:33:38 -0000 1.1.2.5
@@ -203,9 +203,12 @@
ancestors.setStartNode(node);
while ((anode = ancestors.next()) != DTM.NULL) {
- final org.apache.xml.dtm.ref.DTMDefaultBaseIterators.NamespaceIterator namespaces =
- new org.apache.xml.dtm.ref.DTMDefaultBaseIterators.NamespaceIterator();
+ final org.apache.xml.dtm.ref.DTMDefaultBaseIterators
+ .NamespaceIterator namespaces =
+ new org.apache.xml.dtm.ref.DTMDefaultBaseIterators
+ .NamespaceIterator();
+ namespaces.setStartNode(anode);
while ((nsnode = namespaces.next()) != DTM.NULL) {
if (getPrefix(nsnode).equals(prefix)) {
return getNodeValue(nsnode);
@@ -1908,6 +1911,31 @@
}
/**
+ * %HZ% Need Javadoc
+ */
+ public Hashtable getElementsWithIDs() {
+ if (m_idAttributes == null) {
+ return null;
+ }
+
+ // Convert a java.util.Hashtable to an xsltc.runtime.Hashtable
+ Enumeration idValues = m_idAttributes.keys();
+ if (!idValues.hasMoreElements()) {
+ return null;
+ }
+
+ Hashtable idAttrsTable = new Hashtable();
+
+ while (idValues.hasMoreElements()) {
+ Object idValue = idValues.nextElement();
+
+ idAttrsTable.put(idValue, m_idAttributes.get(idValue));
+ }
+
+ return idAttrsTable;
+ }
+
+ /**
* Returns true if a character is an XML whitespace character.
* Order of tests is important for performance ([space] first).
*/
@@ -2267,7 +2295,7 @@
namebuf.append(':');
}
namebuf.append('@');
- namebuf.append(localName.length() > 0 ? localName : qname);
+ namebuf.append((localName.length() != 0) ? localName : qname);
String name = namebuf.toString();
@@ -2573,12 +2601,55 @@
/**
* SAX2: Ignored events
*/
+ // %HZ%: Should these events be dispatched to SAX2DTM?
public void startCDATA() {}
public void endCDATA() {}
public void startDTD(String name, String publicId, String systemId) {}
public void endDTD() {}
public void startEntity(String name) {}
public void endEntity(String name) {}
+ public void notationDecl(String name, String publicId,
+ String systemId) {}
+
+
+ // %HZ%: Need Javadoc
+ public void unparsedEntityDecl(String name, String publicId,
+ String systemId, String notationName)
+ throws SAXException
+ {
+ SAXImpl.this.unparsedEntityDecl(name, publicId, systemId,
+ notationName);
+ }
+
+ // %HZ%: Need Javadoc
+ public void elementDecl(String name, String model)
+ throws SAXException
+ {
+ SAXImpl.this.elementDecl(name, model);
+ }
+
+ // %HZ%: Need Javadoc
+ public void attributeDecl(String eName, String aName, String type,
+ String valueDefault, String value)
+ throws SAXException
+ {
+ SAXImpl.this.attributeDecl(eName, aName, type, valueDefault, value);
+ }
+
+ // %HZ%: Need Javadoc
+ public void externalEntityDecl(String name, String publicId,
+ String systemId)
+ throws SAXException
+ {
+ SAXImpl.this.externalEntityDecl(name, publicId, systemId);
+ }
+
+ // %HZ%: Need Javadoc
+ public void internalEntityDecl(String name, String value)
+ throws SAXException
+ {
+ SAXImpl.this.internalEntityDecl(name, value);
+ }
/**
* Similar to the SAX2 method character(char[], int, int), but this
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org