前回作成した AbstractNamespaceContext を用いて、名前空間宣言が全くされていない NamespaceContext を作成しましょう(一覧)。 注意点は、getNamespaceURI(String) メソッドの返り値が常に空文字列 (XMLConstants.NULL_NS_URI) だってことでしょうか? 宣言されていない接頭辞 (unbound prefix) に対しては常にこの値を返すのでした。
import java.util.*; import javax.xml.namespace.NamespaceContext; import static javax.xml.XMLConstants.NULL_NS_URI; /** @author waman */ public final class EmptyNamespaceContext extends AbstractNamespaceContext { public static final NamespaceContext INSTANCE = new EmptyContext(); private EmptyNamespaceContext(){} @Override protected String getNamespaceURISimply(String prefix) { return NULL_NS_URI; } @Override protected Set<String> getPrefixSetSimply(String uri) { return Collections.emptySet(); } }
ここではシングルトンクラスとして実装していますが、これは必須ではありません。