001    package com.thaiopensource.relaxng.impl;
002    
003    import com.thaiopensource.xml.util.WellKnownNamespaces;
004    import com.thaiopensource.xml.util.Name;
005    
006    class AttributeNameClassChecker implements NameClassVisitor {
007      private String errorMessageId = null;
008      
009      public void visitChoice(NameClass nc1, NameClass nc2) {
010        nc1.accept(this);
011        nc2.accept(this);
012      }
013    
014      public void visitNsName(String ns) {
015        if (ns.equals(WellKnownNamespaces.XMLNS))
016          errorMessageId = "xmlns_uri_attribute";
017      }
018    
019      public void visitNsNameExcept(String ns, NameClass nc) {
020        visitNsName(ns);
021        nc.accept(this);
022      }
023    
024      public void visitAnyName() { }
025    
026      public void visitAnyNameExcept(NameClass nc) {
027        nc.accept(this);
028      }
029    
030      public void visitName(Name name) {
031        visitNsName(name.getNamespaceUri());
032        if (name.equals(new Name("", "xmlns")))
033          errorMessageId = "xmlns_attribute";
034      }
035    
036      public void visitNull() { }
037    
038      public void visitError() { }
039    
040      String checkNameClass(NameClass nc) {
041        errorMessageId = null;
042        nc.accept(this);
043        return errorMessageId;
044      }
045    }