public TypeInfo getSchemaTypeInfo() {
   if (parent != null) {
     // DTD implementation
     DomDoctype doctype = (DomDoctype) parent.owner.getDoctype();
     if (doctype != null) {
       return doctype.getAttributeTypeInfo(parent.getNodeName(), getNodeName());
     }
     // TODO XML Schema implementation
   }
   return null;
 }
 public boolean isId() {
   if (parent != null) {
     DomDoctype doctype = (DomDoctype) parent.owner.getDoctype();
     if (doctype != null) {
       DTDAttributeTypeInfo info =
           doctype.getAttributeTypeInfo(parent.getNodeName(), getNodeName());
       if (info != null && "ID".equals(info.type)) {
         return true;
       }
     }
     DomElement element = (DomElement) parent;
     if (element.userIdAttrs != null && element.userIdAttrs.contains(this)) {
       return true;
     }
     // TODO XML Schema implementation
   }
   return false;
 }