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;
  +             }
        }
   
   }
  
  
  

Reply via email to