balld 00/11/14 21:20:00
Modified: src/org/apache/cocoon/processor/xinclude
XIncludeProcessor.java
Log:
fixed nested xinclude problem thanks to Tagunov Anthony
Revision Changes Path
1.18 +12 -6
xml-cocoon/src/org/apache/cocoon/processor/xinclude/XIncludeProcessor.java
Index: XIncludeProcessor.java
===================================================================
RCS file:
/home/cvs/xml-cocoon/src/org/apache/cocoon/processor/xinclude/XIncludeProcessor.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- XIncludeProcessor.java 2000/11/09 12:06:03 1.17
+++ XIncludeProcessor.java 2000/11/15 05:20:00 1.18
@@ -101,7 +101,7 @@
* a terrible wasteful of memory.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
- * @version CVS $Revision: 1.17 $ $Date: 2000/11/09 12:06:03 $ $Author:
greenrd $
+ * @version CVS $Revision: 1.18 $ $Date: 2000/11/15 05:20:00 $ $Author:
balld $
*/
public class XIncludeProcessor extends AbstractActor implements Processor,
Status {
@@ -217,14 +217,14 @@
Enumeration e = xinclude_elements.elements();
while (e.hasMoreElements()) {
XIncludeElement xinclude =
(XIncludeElement)e.nextElement();
- Object object = processXIncludeElement(xinclude);
+ Object object = processXIncludeElement(xinclude);
//current_xmlbase gets changed here
if (object instanceof Node) {
Node node = (Node)object;
xinclude.parent.replaceChild(node,xinclude.element);
if (node.getNodeType() == Node.ELEMENT_NODE) {
- xmlbase_stack.push(xinclude.base);
+ //xmlbase_stack.push(xinclude.base);
scan((Element)node,xinclude.parent);
- xmlbase_stack.pop();
+ //xmlbase_stack.pop();
}
} else if (object instanceof Node[]) {
Node ary[] = (Node[])object;
@@ -233,11 +233,11 @@
}
xinclude.parent.removeChild(xinclude.element);
for (int i=0; i<ary.length; i++) {
- xmlbase_stack.push(xinclude.base);
+ //xmlbase_stack.push(xinclude.base);
if (ary[i].getNodeType() ==
Node.ELEMENT_NODE) {
scan((Element)ary[i],xinclude.parent);
}
- xmlbase_stack.pop();
+ //xmlbase_stack.pop();
}
}
@@ -350,6 +350,12 @@
} else if (xinclude.parse.equals("cdata")) {
/** i'm not sure what to do here **/
} else {
+ if (local instanceof File) {
+ current_xmlbase = new
File(((File)local).getParent());
+ /**for Java2 we could have current_xmlbase =
((File)local).getParentFile()**/
+ } else { /**local instanceof URL**/
+ current_xmlbase = new URL((URL)local,".");
+ }
InputSource input;
/*if (content instanceof Reader) {
input = new InputSource((Reader)content);