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 }