package client.net.sf.saxon.ce.om; import client.net.sf.saxon.ce.lib.NamespaceConstant; import java.util.HashMap; /** * Well-known names used in XSLT processing. These names must all have * fingerprints in the range 0-1023, to avoid clashing with codes allocated * in a NamePool. We use the top three bits for the namespace, and the bottom * seven bits for the local name. * <p/> * <p>Codes in the range 0-100 are used for standard node kinds such as ELEMENT, * DOCUMENT, etc, and for built-in types such as ITEM and EMPTY.</p> */ public abstract class StandardNames { private static final int DFLT_NS = 0; private static final int XSL_NS = 1; private static final int SAXON_NS = 2; private static final int XML_NS = 3; private static final int XS_NS = 4; private static final int XSI_NS = 5; private static final int IXSL_NS = 6; public static final int DFLT = 0; // 0 public static final int XSL = 128; // 128 public static final int SAXON = 128 * 2; // 256 public static final int XML = 128 * 3; // 384 public static final int XS = 128 * 4; // 512 public static final int XSI = 128 * 5; // 640 public static final int IXSL = 128 * 6; // 768 public static final int XSL_ANALYZE_STRING = XSL; public static final int XSL_APPLY_IMPORTS = XSL + 1; public static final int XSL_APPLY_TEMPLATES = XSL + 2; public static final int XSL_ATTRIBUTE = XSL + 3; public static final int XSL_ATTRIBUTE_SET = XSL + 4; public static final int XSL_BREAK = XSL + 5; public static final int XSL_CALL_TEMPLATE = XSL + 6; public static final int XSL_CATCH = XSL + 7; public static final int XSL_CHARACTER_MAP = XSL + 8; public static final int XSL_CHOOSE = XSL + 9; public static final int XSL_COMMENT = XSL + 10; public static final int XSL_COPY = XSL + 15; public static final int XSL_COPY_OF = XSL + 16; public static final int XSL_DECIMAL_FORMAT = XSL + 17; public static final int XSL_DOCUMENT = XSL + 18; public static final int XSL_ELEMENT = XSL + 19; public static final int XSL_EVALUATE = XSL + 20; public static final int XSL_FALLBACK = XSL + 22; public static final int XSL_FOR_EACH = XSL + 23; public static final int XSL_FORK = XSL + 24; public static final int XSL_FOR_EACH_GROUP = XSL + 26; public static final int XSL_FUNCTION = XSL + 27; public static final int XSL_IF = XSL + 28; public static final int XSL_IMPORT = XSL + 29; public static final int XSL_IMPORT_SCHEMA = XSL + 30; public static final int XSL_INCLUDE = XSL + 35; public static final int XSL_ITERATE = XSL + 36; public static final int XSL_KEY = XSL + 37; public static final int XSL_MATCHING_SUBSTRING = XSL + 38; public static final int XSL_MERGE = XSL + 39; public static final int XSL_MERGE_INPUT = XSL + 40; public static final int XSL_MERGE_SOURCE = XSL + 41; public static final int XSL_MESSAGE = XSL + 42; public static final int XSL_MODE = XSL + 46; public static final int XSL_NAMESPACE = XSL + 47; public static final int XSL_NAMESPACE_ALIAS = XSL + 48; public static final int XSL_NEXT_ITERATION = XSL + 49; public static final int XSL_NEXT_MATCH = XSL + 50; public static final int XSL_NON_MATCHING_SUBSTRING = XSL + 51; public static final int XSL_NUMBER = XSL + 52; public static final int XSL_OTHERWISE = XSL + 53; public static final int XSL_ON_COMPLETION = XSL + 54; public static final int XSL_OUTPUT = XSL + 55; public static final int XSL_OUTPUT_CHARACTER = XSL + 56; public static final int XSL_PARAM = XSL + 60; public static final int XSL_PERFORM_SORT = XSL + 61; public static final int XSL_PRESERVE_SPACE = XSL + 62; public static final int XSL_PROCESSING_INSTRUCTION = XSL + 63; public static final int XSL_RESULT_DOCUMENT = XSL + 64; public static final int XSL_SEQUENCE = XSL + 65; public static final int XSL_SORT = XSL + 66; public static final int XSL_STRIP_SPACE = XSL + 70; public static final int XSL_STYLESHEET = XSL + 71; public static final int XSL_TEMPLATE = XSL + 72; public static final int XSL_TEXT = XSL + 73; public static final int XSL_TRANSFORM = XSL + 74; public static final int XSL_VALUE_OF = XSL + 75; public static final int XSL_VARIABLE = XSL + 76; public static final int XSL_WHEN = XSL + 77; public static final int XSL_WITH_PARAM = XSL + 78; public static final int XSL_TRY = XSL + 79; public static final int XSL_DEFAULT_COLLATION = XSL + 100; public static final int XSL_EXCLUDE_RESULT_PREFIXES = XSL + 101; public static final int XSL_EXTENSION_ELEMENT_PREFIXES = XSL + 102; public static final int XSL_INHERIT_NAMESPACES = XSL + 103; public static final int XSL_TYPE = XSL + 104; public static final int XSL_USE_ATTRIBUTE_SETS = XSL + 105; public static final int XSL_USE_WHEN = XSL + 106; public static final int XSL_VALIDATION = XSL + 107; public static final int XSL_VERSION = XSL + 108; public static final int XSL_XPATH_DEFAULT_NAMESPACE = XSL + 109; public static final int IXSL_REMOVE_ATTRIBUTE = IXSL; public static final int IXSL_SCHEDULE_ACTION = IXSL + 1; public static final int IXSL_SET_ATTRIBUTE = IXSL + 2; public static final int IXSL_TRANSFORM = IXSL + 3; public static final int IXSL_SET_PROPERTY = IXSL + 4; public static final int XML_BASE = XML + 1; public static final int XML_SPACE = XML + 2; public static final int XML_LANG = XML + 3; public static final int XML_ID = XML + 4; public static final int XML_LANG_TYPE = XML + 5; public static final String AS = "as"; public static final String BYTE_ORDER_MARK = "byte-order-mark"; public static final String CASE_ORDER = "case-order"; public static final String CDATA_SECTION_ELEMENTS = "cdata-section-elements"; public static final String CHARACTER = "character"; public static final String COLLATION = "collation"; public static final String COPY_NAMESPACES = "copy-namespaces"; public static final String COUNT = "count"; public static final String DATA_TYPE = "data-type"; public static final String DECIMAL_SEPARATOR = "decimal-separator"; public static final String DEFAULT_COLLATION = "default-collation"; public static final String DEFAULT_MODE = "default-mode"; public static final String DEFAULT_VALIDATION = "default-validation"; public static final String DIGIT = "digit"; public static final String DISABLE_OUTPUT_ESCAPING = "disable-output-escaping"; public static final String DOCTYPE_PUBLIC = "doctype-public"; public static final String DOCTYPE_SYSTEM = "doctype-system"; public static final String ELEMENTS = "elements"; public static final String ESCAPE_URI_ATTRIBUTES = "escape-uri-attributes"; public static final String ENCODING = "encoding"; public static final String EXCLUDE_RESULT_PREFIXES = "exclude-result-prefixes"; public static final String EXTENSION_ELEMENT_PREFIXES = "extension-element-prefixes"; public static final String FLAGS = "flags"; public static final String FORMAT = "format"; public static final String FROM = "from"; public static final String GROUP_ADJACENT = "group-adjacent"; public static final String GROUP_BY = "group-by"; public static final String GROUP_ENDING_WITH = "group-ending-with"; public static final String GROUP_STARTING_WITH = "group-starting-with"; public static final String GROUPING_SEPARATOR = "grouping-separator"; public static final String GROUPING_SIZE = "grouping-size"; public static final String HREF = "href"; public static final String ID = "id"; public static final String INCLUDE_CONTENT_TYPE = "include-content-type"; public static final String INDENT = "indent"; public static final String INFINITY = "infinity"; public static final String INHERIT_NAMESPACES = "inherit-namespaces"; public static final String INPUT_TYPE_ANNOTATIONS = "input-type-annotations"; public static final String LANG = "lang"; public static final String LETTER_VALUE = "letter-value"; public static final String LEVEL = "level"; public static final String MATCH = "match"; public static final String MEDIA_TYPE = "media-type"; public static final String METHOD = "method"; public static final String MINUS_SIGN = "minus-sign"; public static final String MODE = "mode"; public static final String NAME = "name"; public static final String NAMESPACE = "namespace"; public static final String NAN = "NaN"; public static final String NORMALIZATION_FORM = "normalization-form"; public static final String OMIT_XML_DECLARATION = "omit-xml-declaration"; public static final String ORDER = "order"; public static final String ORDINAL = "ordinal"; public static final String OUTPUT_VERSION = "output-version"; public static final String OVERRIDE = "override"; public static final String PATTERN_SEPARATOR = "pattern-separator"; public static final String PERCENT = "percent"; public static final String PER_MILLE = "per-mille"; public static final String IXSL_PREVENT_DEFAULT = "{" + NamespaceConstant.IXSL + "}" + "prevent-default"; public static final String IXSL_EVENT_PROPERTY = "{" + NamespaceConstant.IXSL + "}" + "event-property"; public static final String PRIORITY = "priority"; public static final String REGEX = "regex"; public static final String REQUIRED = "required"; public static final String RESULT_PREFIX = "result-prefix"; public static final String SCHEMA_LOCATION = "schema-location"; public static final String SELECT = "select"; public static final String SEPARATOR = "separator"; public static final String STABLE = "stable"; public static final String STANDALONE = "standalone"; public static final String STRING = "string"; public static final String STYLESHEET_PREFIX = "stylesheet-prefix"; public static final String TERMINATE = "terminate"; public static final String TEST = "test"; public static final String TUNNEL = "tunnel"; public static final String TYPE = "type"; public static final String UNDECLARE_PREFIXES = "undeclare-prefixes"; public static final String USE = "use"; public static final String USE_ATTRIBUTE_SETS = "use-attribute-sets"; public static final String USE_CHARACTER_MAPS = "use-character-maps"; public static final String USE_WHEN = "use-when"; public static final String VALIDATION = "validation"; public static final String VALUE = "value"; public static final String VERSION = "version"; public static final String XPATH_DEFAULT_NAMESPACE = "xpath-default-namespace"; public static final String ZERO_DIGIT = "zero-digit"; public static final int XS_STRING = XS + 1; public static final int XS_BOOLEAN = XS + 2; public static final int XS_DECIMAL = XS + 3; public static final int XS_FLOAT = XS + 4; public static final int XS_DOUBLE = XS + 5; public static final int XS_DURATION = XS + 6; public static final int XS_DATE_TIME = XS + 7; public static final int XS_TIME = XS + 8; public static final int XS_DATE = XS + 9; public static final int XS_G_YEAR_MONTH = XS + 10; public static final int XS_G_YEAR = XS + 11; public static final int XS_G_MONTH_DAY = XS + 12; public static final int XS_G_DAY = XS + 13; public static final int XS_G_MONTH = XS + 14; public static final int XS_HEX_BINARY = XS + 15; public static final int XS_BASE64_BINARY = XS + 16; public static final int XS_ANY_URI = XS + 17; public static final int XS_QNAME = XS + 18; public static final int XS_INTEGER = XS + 21; // Note that any type code <= XS_INTEGER is considered to represent a // primitive type: see Type.isPrimitiveType() public static final int XS_ID = XS + 48; public static final int XS_IDREF = XS + 49; public static final int XS_ANY_TYPE = XS + 60; public static final int XS_ANY_SIMPLE_TYPE = XS + 61; public static final int XS_INVALID_NAME = XS + 62; public static final int XS_UNTYPED = XS + 118; public static final int XS_UNTYPED_ATOMIC = XS + 119; public static final int XS_ANY_ATOMIC_TYPE = XS + 120; public static final int XS_YEAR_MONTH_DURATION = XS + 121; public static final int XS_DAY_TIME_DURATION = XS + 122; public static final int XS_NUMERIC = XS + 123; private static String[] localNames = new String[1023]; private static HashMap<String, Integer> lookup = new HashMap<String, Integer>(1023); // key is an expanded QName in Clark notation // value is a fingerprint, as a java.lang.Integer private StandardNames() { //pool = namePool; } private static void bindXSLTName(int constant, String localName) { localNames[constant] = localName; lookup.put('{' + NamespaceConstant.XSLT + '}' + localName, Integer.valueOf(constant)); } private static void bindIXSLName(int constant, String localName) { localNames[constant] = localName; lookup.put('{' + NamespaceConstant.IXSL + '}' + localName, Integer.valueOf(constant)); } private static void bindXMLName(int constant, String localName) { localNames[constant] = localName; lookup.put('{' + NamespaceConstant.XML + '}' + localName, Integer.valueOf(constant)); } private static void bindXSName(int constant, String localName) { localNames[constant] = localName; lookup.put('{' + NamespaceConstant.SCHEMA + '}' + localName, Integer.valueOf(constant)); } private static void bindXSIName(int constant, String localName) { localNames[constant] = localName; lookup.put('{' + NamespaceConstant.SCHEMA_INSTANCE + '}' + localName, Integer.valueOf(constant)); } static { bindXSLTName(XSL_ANALYZE_STRING, "analyze-string"); bindXSLTName(XSL_APPLY_IMPORTS, "apply-imports"); bindXSLTName(XSL_APPLY_TEMPLATES, "apply-templates"); bindXSLTName(XSL_ATTRIBUTE, "attribute"); bindXSLTName(XSL_ATTRIBUTE_SET, "attribute-set"); bindXSLTName(XSL_BREAK, "break"); bindXSLTName(XSL_CALL_TEMPLATE, "call-template"); bindXSLTName(XSL_CATCH, "catch"); bindXSLTName(XSL_CHARACTER_MAP, "character-map"); bindXSLTName(XSL_CHOOSE, "choose"); bindXSLTName(XSL_COMMENT, "comment"); bindXSLTName(XSL_COPY, "copy"); bindXSLTName(XSL_COPY_OF, "copy-of"); bindXSLTName(XSL_DECIMAL_FORMAT, "decimal-format"); bindXSLTName(XSL_DOCUMENT, "document"); bindXSLTName(XSL_ELEMENT, "element"); bindXSLTName(XSL_EVALUATE, "evaluate"); bindXSLTName(XSL_FALLBACK, "fallback"); bindXSLTName(XSL_FOR_EACH, "for-each"); bindXSLTName(XSL_FOR_EACH_GROUP, "for-each-group"); bindXSLTName(XSL_FORK, "fork"); bindXSLTName(XSL_FUNCTION, "function"); bindXSLTName(XSL_IF, "if"); bindXSLTName(XSL_IMPORT, "import"); bindXSLTName(XSL_IMPORT_SCHEMA, "import-schema"); bindXSLTName(XSL_INCLUDE, "include"); bindXSLTName(XSL_ITERATE, "iterate"); bindXSLTName(XSL_KEY, "key"); bindXSLTName(XSL_MATCHING_SUBSTRING, "matching-substring"); bindXSLTName(XSL_MERGE, "merge"); bindXSLTName(XSL_MERGE_INPUT, "merge-input"); bindXSLTName(XSL_MERGE_SOURCE, "merge-source"); bindXSLTName(XSL_MESSAGE, "message"); bindXSLTName(XSL_MODE, "mode"); bindXSLTName(XSL_NEXT_MATCH, "next-match"); bindXSLTName(XSL_NUMBER, "number"); bindXSLTName(XSL_NAMESPACE, "namespace"); bindXSLTName(XSL_NAMESPACE_ALIAS, "namespace-alias"); bindXSLTName(XSL_NEXT_ITERATION, "next-iteration"); bindXSLTName(XSL_NON_MATCHING_SUBSTRING, "non-matching-substring"); bindXSLTName(XSL_ON_COMPLETION, "on-completion"); bindXSLTName(XSL_OTHERWISE, "otherwise"); bindXSLTName(XSL_OUTPUT, "output"); bindXSLTName(XSL_OUTPUT_CHARACTER, "output-character"); bindXSLTName(XSL_PARAM, "param"); bindXSLTName(XSL_PERFORM_SORT, "perform-sort"); bindXSLTName(XSL_PRESERVE_SPACE, "preserve-space"); bindXSLTName(XSL_PROCESSING_INSTRUCTION, "processing-instruction"); bindXSLTName(XSL_RESULT_DOCUMENT, "result-document"); bindXSLTName(XSL_SEQUENCE, "sequence"); bindXSLTName(XSL_SORT, "sort"); bindXSLTName(XSL_STRIP_SPACE, "strip-space"); bindXSLTName(XSL_STYLESHEET, "stylesheet"); bindXSLTName(XSL_TEMPLATE, "template"); bindXSLTName(XSL_TEXT, "text"); bindXSLTName(XSL_TRANSFORM, "transform"); bindXSLTName(XSL_TRY, "try"); bindXSLTName(XSL_VALUE_OF, "value-of"); bindXSLTName(XSL_VARIABLE, "variable"); bindXSLTName(XSL_WITH_PARAM, "with-param"); bindXSLTName(XSL_WHEN, "when"); bindXSLTName(XSL_DEFAULT_COLLATION, "default-collation"); bindXSLTName(XSL_XPATH_DEFAULT_NAMESPACE, "xpath-default-namespace"); bindXSLTName(XSL_EXCLUDE_RESULT_PREFIXES, "exclude-result-prefixes"); bindXSLTName(XSL_EXTENSION_ELEMENT_PREFIXES, "extension-element-prefixes"); bindXSLTName(XSL_INHERIT_NAMESPACES, "inherit-namespaces"); bindXSLTName(XSL_TYPE, "type"); bindXSLTName(XSL_USE_ATTRIBUTE_SETS, "use-attribute-sets"); bindXSLTName(XSL_USE_WHEN, "use-when"); bindXSLTName(XSL_VALIDATION, "validation"); bindXSLTName(XSL_VERSION, "version"); bindXMLName(XML_BASE, "base"); bindXMLName(XML_SPACE, "space"); bindXMLName(XML_LANG, "lang"); bindXMLName(XML_ID, "id"); bindXMLName(XML_LANG_TYPE, "_langType"); bindXSName(XS_STRING, "string"); bindXSName(XS_BOOLEAN, "boolean"); bindXSName(XS_DECIMAL, "decimal"); bindXSName(XS_FLOAT, "float"); bindXSName(XS_DOUBLE, "double"); bindXSName(XS_DURATION, "duration"); bindXSName(XS_DATE_TIME, "dateTime"); bindXSName(XS_TIME, "time"); bindXSName(XS_DATE, "date"); bindXSName(XS_G_YEAR_MONTH, "gYearMonth"); bindXSName(XS_G_YEAR, "gYear"); bindXSName(XS_G_MONTH_DAY, "gMonthDay"); bindXSName(XS_G_DAY, "gDay"); bindXSName(XS_G_MONTH, "gMonth"); bindXSName(XS_HEX_BINARY, "hexBinary"); bindXSName(XS_BASE64_BINARY, "base64Binary"); bindXSName(XS_ANY_URI, "anyURI"); bindXSName(XS_QNAME, "QName"); bindXSName(XS_INTEGER, "integer"); bindXSName(XS_ANY_TYPE, "anyType"); bindXSName(XS_ANY_SIMPLE_TYPE, "anySimpleType"); bindXSName(XS_INVALID_NAME, "invalidName"); bindXSName(XS_UNTYPED, "untyped"); bindXSName(XS_UNTYPED_ATOMIC, "untypedAtomic"); bindXSName(XS_ANY_ATOMIC_TYPE, "anyAtomicType"); bindXSName(XS_YEAR_MONTH_DURATION, "yearMonthDuration"); bindXSName(XS_DAY_TIME_DURATION, "dayTimeDuration"); bindXSName(XS_NUMERIC, "_numeric_"); bindIXSLName(IXSL_REMOVE_ATTRIBUTE,"remove-attribute"); bindIXSLName(IXSL_SCHEDULE_ACTION,"schedule-action"); bindIXSLName(IXSL_SET_ATTRIBUTE,"set-attribute"); bindIXSLName(IXSL_SET_PROPERTY,"set-property"); bindIXSLName(IXSL_TRANSFORM,"transform"); } /** * Get the fingerprint of a system-defined name, from its URI and local name * * @param uri the namespace URI * @param localName the local part of the name * @return the standard fingerprint, or -1 if this is not a built-in name */ public static int getFingerprint(String uri, String localName) { Integer fp = lookup.get('{' + uri + '}' + localName); if (fp == null) { return -1; } else { return fp.intValue(); } } /** * Get the local part of a system-defined name * @param fingerprint the fingerprint of the name * @return the local part of the name */ public static String getLocalName(int fingerprint) { return localNames[fingerprint]; } /** * Get the namespace URI part of a system-defined name * @param fingerprint the fingerprint of the name * @return the namespace URI part of the name */ public static String getURI(int fingerprint) { int c = fingerprint >> 7; switch (c) { case DFLT_NS: return ""; case XSL_NS: return NamespaceConstant.XSLT; case IXSL_NS: return NamespaceConstant.IXSL; case SAXON_NS: return NamespaceConstant.SAXON; case XML_NS: return NamespaceConstant.XML; case XS_NS: return NamespaceConstant.SCHEMA; case XSI_NS: return NamespaceConstant.SCHEMA_INSTANCE; default: return null; } } /** * Get the namespace URI part of a system-defined name as a URI code * @param fingerprint the fingerprint of the name * @return the namespace URI part of the name, as a URI code */ public static short getURICode(int fingerprint) { int c = fingerprint >> 7; switch (c) { case DFLT_NS: return 0; case XSL_NS: return NamespaceConstant.XSLT_CODE; case SAXON_NS: return NamespaceConstant.SAXON_CODE; case XML_NS: return NamespaceConstant.XML_CODE; case XS_NS: return NamespaceConstant.SCHEMA_CODE; case XSI_NS: return NamespaceConstant.XSI_CODE; case IXSL_NS: return NamespaceConstant.IXSL_CODE; default: return -1; } } /** * Get the Clark form of a system-defined name, given its name code or fingerprint * @param fingerprint the fingerprint of the name * @return the local name if the name is in the null namespace, or "{uri}local" * otherwise. The name is always interned. */ public static String getClarkName(int fingerprint) { String uri = getURI(fingerprint); if (uri.length() == 0) { return getLocalName(fingerprint); } else { return '{' + uri + '}' + getLocalName(fingerprint); } } /** * Get the conventional prefix of a system-defined name * @param fingerprint the fingerprint of the name * @return the conventional prefix of the name */ public static String getPrefix(int fingerprint) { int c = fingerprint >> 7; switch (c) { case DFLT_NS: return ""; case XSL_NS: return "xsl"; case SAXON_NS: return "claxon"; case XML_NS: return "xml"; case XS_NS: return "xs"; case XSI_NS: return "xsi"; case IXSL_NS: return "ixsl"; default: return null; } } /** * Get the lexical display form of a system-defined name * @param fingerprint the fingerprint of the name * @return the lexical display form of the name, using a conventional prefix */ public static String getDisplayName(int fingerprint) { if (fingerprint == -1) { return "(anonymous type)"; } if (fingerprint > 1023) { return "(" + fingerprint + ')'; } if ((fingerprint >> 7) == DFLT) { return getLocalName(fingerprint); } return getPrefix(fingerprint) + ':' + getLocalName(fingerprint); } /** * Get a StructuredQName representing a system-defined name * @param fingerprint the fingerprint of the name * @return a StructuredQName representing the system-defined name */ public static StructuredQName getStructuredQName(int fingerprint) { return new StructuredQName(getPrefix(fingerprint), getURI(fingerprint), getLocalName(fingerprint)); } } // This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. // If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. // This Source Code Form is “Incompatible With Secondary Licenses”, as defined by the Mozilla Public License, v. 2.0.