You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by jk...@apache.org on 2002/10/22 22:00:47 UTC
cvs commit: xml-xalan/java/src/org/apache/xml/dtm/dom2dtm2 NodeDTMIDResolver_xerces.java
jkesselm 2002/10/22 13:00:47
Modified: java/src/org/apache/xml/dtm/dom2dtm2 Tag: xslt20
NodeDTMIDResolver_xerces.java
Log:
Experimenting with improvements to the code that adapts for
contiguous text. Significant improvement, but more is desirable.
Revision Changes Path
No revision
No revision
1.1.2.3 +66 -0 xml-xalan/java/src/org/apache/xml/dtm/dom2dtm2/Attic/NodeDTMIDResolver_xerces.java
Index: NodeDTMIDResolver_xerces.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xml/dtm/dom2dtm2/Attic/NodeDTMIDResolver_xerces.java,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- NodeDTMIDResolver_xerces.java 30 Sep 2002 16:53:20 -0000 1.1.2.2
+++ NodeDTMIDResolver_xerces.java 22 Oct 2002 20:00:47 -0000 1.1.2.3
@@ -113,6 +113,72 @@
* */
public int findID(Node n)
{
+ if(true) /*****************/
+ {
+ // %REVIEW% Should we have stored which doc we're applying to,
+ // and enforce membership? Probably good idea since we're
+ // relying on implementation characteristics.
+
+ if(n==null) return DTM.NULL;
+
+ // If it's our built-in, we've got a custom method
+ if(n instanceof DOM2DTMdefaultNamespaceDeclarationNode)
+ {
+ return
+ ((DOM2DTMdefaultNamespaceDeclarationNode)n).getIDOfNode();
+ }
+
+
+ int ntype=n.getNodeType();
+ Integer id;
+
+
+ NodeImpl n3=(NodeImpl)n;
+ id=(Integer)n3.getUserData(KEY_ID);
+
+ if(id==null)
+ {
+ switch(ntype)
+ {
+ case Node.TEXT_NODE:
+ case Node.CDATA_SECTION_NODE:
+ case Node.ENTITY_REFERENCE_NODE:
+ // Special handling for text nodes: Map them
+ // as the first node in their Logically
+ // Consecutive Text block.
+ //
+ // %REVEIW% Should this lookup be recursive, so IDs are
+ // set on all the intermediates as a side effect?
+ //
+ // Get the "containing" node; it may be same as n.
+ NodeImpl root=(NodeImpl)findContainingXPathNode(n);
+ id=(Integer)root.getUserData(KEY_ID);
+ if(id==null)
+ {
+ // Assign ID. Note sequence; first is added at 0.
+ id=new Integer(m_map.size());
+ root.setUserData(KEY_ID,id,null);
+ m_map.addElement(root);
+ }
+ if(root!=n3)
+ n3.setUserData(KEY_ID,id,null);
+ break;
+
+ default:
+ // Assign ID. Note sequence; first is added at 0.
+ id=new Integer(m_map.size());
+ n3.setUserData(KEY_ID,id,null);
+ m_map.addElement(n);
+ break;
+
+ }// end switch
+ }// end if ID was null
+
+ // If this throws NPE, something above is Broken
+ return id.intValue();
+
+ } /***********************/
+
// %REVIEW% Should we have stored which doc we're applying to,
// and enforce membership? Probably good idea since we're
// relying on implementation characteristics.
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org