sboag 00/11/15 10:09:07
Modified: java/src/org/apache/xalan/processor StylesheetHandler.java
java/src/org/apache/xalan/templates ElemTemplateElement.java
StylesheetComposed.java TemplateList.java
Log:
Add document order indexes to ElemTemplateElements, as per
discussions with Gary P., and pass them into TemplateList#setTemplate.
Revision Changes Path
1.23 +4 -0
xml-xalan/java/src/org/apache/xalan/processor/StylesheetHandler.java
Index: StylesheetHandler.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/processor/StylesheetHandler.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- StylesheetHandler.java 2000/11/15 02:35:06 1.22
+++ StylesheetHandler.java 2000/11/15 18:08:59 1.23
@@ -1175,6 +1175,8 @@
return null;
}
}
+
+ private int m_docOrderCount = 0;
/**
* Push the current XSLTElementProcessor to the top of the stack.
@@ -1183,6 +1185,8 @@
*/
void pushElemTemplateElement(ElemTemplateElement elem)
{
+ if(elem.getUid() == -1)
+ elem.setUid(m_docOrderCount++);
m_elems.push(elem);
}
1.22 +23 -0
xml-xalan/java/src/org/apache/xalan/templates/ElemTemplateElement.java
Index: ElemTemplateElement.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemTemplateElement.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- ElemTemplateElement.java 2000/11/13 16:27:10 1.21
+++ ElemTemplateElement.java 2000/11/15 18:09:02 1.22
@@ -942,6 +942,29 @@
throw new TransformerException(se);
}
}
+
+ protected int m_docOrderNumber = -1;
+
+ /**
+ * Set the UID (document order index).
+ *
+ * @param kIndex Index of this child.
+ */
+ public void setUid(int i)
+ {
+ m_docOrderNumber = i;
+ }
+
+ /**
+ * Get the UID (document order index).
+ *
+ * @return Index of this child
+ */
+ public int getUid()
+ {
+ return m_docOrderNumber;
+ }
+
/**
* Parent node.
1.17 +4 -3
xml-xalan/java/src/org/apache/xalan/templates/StylesheetComposed.java
Index: StylesheetComposed.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/StylesheetComposed.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- StylesheetComposed.java 2000/11/13 16:27:11 1.16
+++ StylesheetComposed.java 2000/11/15 18:09:02 1.17
@@ -350,7 +350,7 @@
XPath match = included.getStripSpace(i);
- m_whiteSpaceInfoList.setTemplate(new WhiteSpaceInfo(match, true));
+ m_whiteSpaceInfoList.setTemplate(new WhiteSpaceInfo(match, true),
i+k);
}
n = included.getPreserveSpaceCount();
@@ -362,7 +362,7 @@
XPath match = included.getPreserveSpace(i);
- m_whiteSpaceInfoList.setTemplate(new WhiteSpaceInfo(match, false));
+ m_whiteSpaceInfoList.setTemplate(new WhiteSpaceInfo(match, false),
i+k);
}
}
}
@@ -688,7 +688,8 @@
for (int i = 0; i < n; i++)
{
- m_templateList.setTemplate(included.getTemplate(i));
+ ElemTemplate template = included.getTemplate(i);
+ m_templateList.setTemplate(template, template.getUid());
}
}
1.20 +1 -34
xml-xalan/java/src/org/apache/xalan/templates/TemplateList.java
Index: TemplateList.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/TemplateList.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- TemplateList.java 2000/11/13 16:27:11 1.19
+++ TemplateList.java 2000/11/15 18:09:02 1.20
@@ -99,41 +99,8 @@
*
* @param template
*/
- public void setTemplate(ElemTemplate template)
+ public void setTemplate(ElemTemplate template, int pos)
{
-
- int pos = 0;
-
- if (null == m_firstTemplate)
- {
- m_firstTemplate = template;
- }
- else
- {
- ElemTemplateElement next = m_firstTemplate;
-
- while (null != next)
- {
- if (null == next.m_nextSibling)
- {
- next.m_nextSibling = template;
- template.m_nextSibling = null; // just to play it safe.
-
- break;
- }
- else if (template.equals(next.m_nextSibling))
- {
- pos++;
-
- break;
- }
-
- pos++;
-
- next = next.m_nextSibling;
- }
- }
-
if (null != template.getName())
{
if (m_namedTemplates.get(template.getName()) == null)