balld 00/06/03 22:52:21
Modified: src/org/apache/cocoon/processor/xinclude
XIncludeProcessor.java
Log:
XIncludeProcessor now strips document type nodes from included documents
Revision Changes Path
1.7 +16 -1
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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- XIncludeProcessor.java 2000/05/23 06:00:11 1.6
+++ XIncludeProcessor.java 2000/06/04 05:52:20 1.7
@@ -44,7 +44,7 @@
* from my XInclude filter for cocoon2.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
- * @version CVS $Revision: 1.6 $ $Date: 2000/05/23 06:00:11 $ $Author: balld
$
+ * @version CVS $Revision: 1.7 $ $Date: 2000/06/04 05:52:20 $ $Author: balld
$
*/
public class XIncludeProcessor extends AbstractActor implements Processor,
Status {
@@ -95,6 +95,7 @@
return false;
}
+
class XIncludeProcessorWorker {
boolean debug;
@@ -266,6 +267,7 @@
Document included_document = null;
try {
included_document = parser.parse(input,false);
+
stripDocumentTypeNodes(included_document.getDocumentElement());
} catch (Exception e) {}
if (suffix.startsWith("xpointer(") &&
suffix.endsWith(")")) {
String xpath =
suffix.substring(9,suffix.length()-1);
@@ -281,6 +283,19 @@
}
}
return result;
+ }
+
+ void stripDocumentTypeNodes(Node node) {
+ Node child = node.getFirstChild();
+ while (child != null) {
+ Node next = child.getNextSibling();
+ if (child.getNodeType() == Node.DOCUMENT_TYPE_NODE) {
+ node.removeChild(child);
+ } else if (child.getNodeType() == Node.ELEMENT_NODE) {
+ stripDocumentTypeNodes(child);
+ }
+ child = next;
+ }
}
}