1 22 23 package org.xquark.schema.validation; 24 25 import java.util.List ; 26 27 import org.xquark.schema.ComplexType; 28 import org.xquark.schema.ElementDeclaration; 29 import org.xquark.schema.SchemaManager; 30 31 public class DefaultContentIterator extends ContentIterator { 32 private static final String RCSRevision = "$Revision: 1.1 $"; 33 private static final String RCSName = "$Name: $"; 34 35 private SchemaManager manager = null; 36 private ComplexType type = null; 37 private ElementDeclaration matchedDecl = null; 38 private int processContents; 39 40 public DefaultContentIterator(SchemaManager manager) { 41 this(manager, LAX); 42 } 43 44 public DefaultContentIterator(SchemaManager manager, int processContents) { 45 super(0, Integer.MAX_VALUE); 46 this.manager = manager; 47 this.processContents = processContents; 48 } 49 50 public DefaultContentIterator(ComplexType type) { 51 super(0, Integer.MAX_VALUE); 52 processContents = LAX; 53 this.type = type; 54 } 55 56 public ElementDeclaration getMatchedDeclaration() { 57 return matchedDecl; 58 } 59 60 public int getProcessContents() { 61 return processContents; 62 } 63 64 private SchemaManager getManager() { 65 if (type != null) return type.getManager(); 66 else return manager; 67 } 68 69 protected int nextElement(String namespace, String localName) { 70 if (processContents == SKIP) return UNKNOWN; 71 72 if (namespace != null && namespace.length() == 0) namespace = null; 73 74 if (namespace == null && type != null) { 75 matchedDecl = type.getElementDeclaration(null, localName); 76 } else { 77 matchedDecl = getManager().getElementDeclaration(namespace, localName); 78 } 79 if (matchedDecl != null) 80 return MATCHED; 81 else 82 return UNKNOWN; 83 } 84 85 public int stopProcessing() { 86 return DONE; 87 } 88 89 protected boolean nextValidElements(List elements) { 90 return true; 91 } 92 93 } 94 95 | Popular Tags |