package org.basex.query.util; import static org.basex.query.QueryText.*; import static org.basex.util.Token.*; import org.basex.util.Atts; /** * Global namespaces. * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ public final class NSGlobal { /** Namespace: prefixes and namespace URIs. */ private static final Atts NS = new Atts(); /** Reserved namespaces. */ private static final int RESERVED; static { // reserved namespaces NS.add(XML, XMLURI); NS.add(XS, XSURI); NS.add(XSI, XSIURI); NS.add(FN, FNURI); NS.add(MATH, MATHURI); NS.add(MAP, MAPURI); RESERVED = NS.size(); // implementation-defined pre-declarations NS.add(LOCAL, LOCALURI); NS.add(OPT, OPTIONURI); NS.add(OUTPUT, OUTPUTURI); NS.add(ERR, ERRORURI); // BaseX namespaces NS.add(BASEX, BASEXURI); NS.add(DB, DBURI); NS.add(FT, FTURI); NS.add(HOF, HOFURI); NS.add(INDEX, INDEXURI); NS.add(JSON, JSONURI); NS.add(SQL, SQLURI); NS.add(UTIL, UTILURI); NS.add(XSLT, XSLTURI); NS.add(REPO, REPOURI); // EXPath namespaces NS.add(CRYPTO, CRYPTOURI); NS.add(FILE, FILEURI); NS.add(HTTP, HTTPURI); NS.add(ZIP, ZIPURI); NS.add(PKG, PKGURI); } /** Private constructor. */ private NSGlobal() { } /** * Finds the specified namespace uri. * @param pref prefix of the namespace * @return uri, or {@code null} */ public static byte[] uri(final byte[] pref) { for(int s = NS.size() - 1; s >= 0; s--) { if(eq(NS.name(s), pref)) return NS.string(s); } return null; } /** * Finds the prefix for the specified uri. * @param uri namespace uri * @return prefix, or empty string */ public static byte[] prefix(final byte[] uri) { for(int s = NS.size() - 1; s >= 0; s--) { if(eq(NS.string(s), uri)) return NS.name(s); } return EMPTY; } /** * Checks if the specified uri is a reserved namespace. * @param uri uri to be checked * @return result of check */ public static boolean reserved(final byte[] uri) { for(int s = RESERVED - 1; s >= 0; s--) { if(eq(NS.string(s), uri)) return true; } return false; } }