home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xml4j.jar / com / ibm / xml / parsers / RevalidatingDOMParser.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-08-30  |  2.9 KB  |  126 lines

  1. package com.ibm.xml.parsers;
  2.  
  3. import com.ibm.xml.dom.TextImpl;
  4. import com.ibm.xml.framework.ElementDeclPool;
  5. import com.ibm.xml.framework.ParserState;
  6. import com.ibm.xml.framework.StringPool;
  7. import com.ibm.xml.framework.XMLParser;
  8. import com.ibm.xml.framework.XMLValidationHandler;
  9. import org.w3c.dom.Node;
  10. import org.w3c.dom.NodeList;
  11.  
  12. public class RevalidatingDOMParser extends DOMParser {
  13.    private static final boolean DEBUG_VALIDATE = false;
  14.  
  15.    public final Node validate(Node var1) {
  16.       if (var1.getNodeType() != 1) {
  17.          throw new IllegalArgumentException("Can't revalidate a non element");
  18.       } else {
  19.          XMLValidationHandler var2 = ((XMLParser)this).getValidationHandler();
  20.          ParserState var3 = ((XMLParser)this).getParserState();
  21.          StringPool var4 = var3.getStringPool();
  22.          ElementDeclPool var5 = var3.getElementDeclPool();
  23.          return this.recursiveValidate(var1, var2, var4, var5);
  24.       }
  25.    }
  26.  
  27.    private final Node recursiveValidate(Node var1, XMLValidationHandler var2, StringPool var3, ElementDeclPool var4) {
  28.       int[] var5 = new int[this.countChildren(var1)];
  29.       Node[] var6 = new Node[var5.length];
  30.       int var7 = this.expandChildren(var1, var5, var6, 0, var3);
  31.       int var8 = -1;
  32.       int var9 = var3.addSymbol(var1.getNodeName());
  33.       int var10 = var4.getElement(var9);
  34.  
  35.       try {
  36.          var8 = var2.checkContent(var10, var7, var5);
  37.       } catch (Exception var16) {
  38.       }
  39.  
  40.       Node var11 = null;
  41.       if (var8 != -1) {
  42.          var11 = var6[var8];
  43.          String var12 = var4.getContentSpecAsString(var10);
  44.          int var13 = var3.addString(var12);
  45.          int var14 = var8 != var7 ? 27 : 164;
  46.  
  47.          try {
  48.             ((XMLParser)this).getParserState().getErrorHandler().error2(var14, var9, var13);
  49.          } catch (Exception var15) {
  50.          }
  51.       } else {
  52.          for(int var19 = 0; var19 < var7; ++var19) {
  53.             if (var5[var19] != -1) {
  54.                Node var20 = var6[var19];
  55.                if (var20 != null) {
  56.                   var20 = this.recursiveValidate(var20, var2, var3, var4);
  57.                   if (var20 != null) {
  58.                      var11 = var20;
  59.                      break;
  60.                   }
  61.                }
  62.             }
  63.          }
  64.       }
  65.  
  66.       Object var17 = null;
  67.       Object var18 = null;
  68.       return var11;
  69.    }
  70.  
  71.    private final int expandChildren(Node var1, int[] var2, Node[] var3, int var4, StringPool var5) {
  72.       if (var1.hasChildNodes()) {
  73.          NodeList var6 = var1.getChildNodes();
  74.          int var7 = var6.getLength();
  75.  
  76.          for(int var8 = 0; var8 < var7; ++var8) {
  77.             Node var9 = var6.item(var8);
  78.             short var10 = var9.getNodeType();
  79.             if (var10 == 1) {
  80.                var2[var4] = var5.addSymbol(var9.getNodeName());
  81.                var3[var4] = var9;
  82.                ++var4;
  83.             } else if (var10 == 3) {
  84.                if (!(var9 instanceof TextImpl) || !((TextImpl)var9).isIgnorableWhitespace()) {
  85.                   var2[var4] = -1;
  86.                   var3[var4] = var9;
  87.                   ++var4;
  88.                }
  89.             } else if (var10 == 5) {
  90.                var4 = this.expandChildren(var9, var2, var3, var4, var5);
  91.             }
  92.          }
  93.       }
  94.  
  95.       return var4;
  96.    }
  97.  
  98.    private final int countChildren(Node var1) {
  99.       int var2 = 0;
  100.       if (var1.hasChildNodes()) {
  101.          NodeList var3 = var1.getChildNodes();
  102.          var2 += var3.getLength();
  103.  
  104.          for(int var4 = var2 - 1; var4 >= 0; --var4) {
  105.             Node var5 = var3.item(var4);
  106.             if (var5.getNodeType() == 5) {
  107.                var2 += this.countChildren(var5) - 1;
  108.             }
  109.          }
  110.       }
  111.  
  112.       return var2;
  113.    }
  114.  
  115.    private static void print(Node var0, String var1) {
  116.    }
  117.  
  118.    private static String normalize(String var0) {
  119.       return null;
  120.    }
  121.  
  122.    private static String type(int var0) {
  123.       return null;
  124.    }
  125. }
  126.