001 package org.relaxng.datatype; 002 003 /** 004 * An interface that must be implemented by caller to 005 * provide context information that is necessary to 006 * perform validation of some Datatypes. 007 * 008 * @author <a href="mailto:jjc@jclark.com">James Clark</a> 009 * @author <a href="mailto:kohsuke.kawaguchi@sun.com">Kohsuke KAWAGUCHI</a> 010 */ 011 public interface ValidationContext { 012 013 /** 014 * Resolves a namespace prefix to the corresponding namespace URI. 015 * 016 * This method is used for validating the QName type, for example. 017 * 018 * <p> 019 * If the prefix is "" (empty string), it indicates 020 * an unprefixed value. The callee 021 * should resolve it as for an unprefixed 022 * element, rather than for an unprefixed attribute. 023 * 024 * <p> 025 * If the prefix is "xml", then the callee must resolve 026 * this prefix into "http://www.w3.org/XML/1998/namespace", 027 * as defined in the XML Namespaces Recommendation. 028 * 029 * @return 030 * namespace URI of this prefix. 031 * If the specified prefix is not declared, 032 * the implementation must return null. 033 */ 034 String resolveNamespacePrefix( String prefix ); 035 036 /** 037 * Returns the base URI of the context. The null string may be returned 038 * if no base URI is known. 039 */ 040 String getBaseUri(); 041 042 /** 043 * Checks if an unparsed entity is declared with the 044 * specified name. 045 * 046 * @return 047 * true 048 * if the DTD has an unparsed entity declaration for 049 * the specified name. 050 * false 051 * otherwise. 052 */ 053 boolean isUnparsedEntity( String entityName ); 054 055 /** 056 * Checks if a notation is declared with the 057 * specified name. 058 * 059 * @return 060 * true 061 * if the DTD has a notation declaration for the specified name. 062 * false 063 * otherwise. 064 */ 065 boolean isNotation( String notationName ); 066 }