Class NamespaceBindingUtils

java.lang.Object
org.rumbledb.runtime.xml.NamespaceBindingUtils

public final class NamespaceBindingUtils extends Object
  • Field Details

  • Method Details

    • isValidNcName

      public static boolean isValidNcName(String s)
      XML 1.0 / Namespaces in XML — NCName character checks (no colon).
    • isValidXmlName

      public static boolean isValidXmlName(String s)
      XML 1.0 Name character checks (colon permitted).
    • isValidXmlNmToken

      public static boolean isValidXmlNmToken(String s)
      XML 1.0 Nmtoken character checks (one or more NameChar code points).
    • builtinNamespaceResolver

      public static NamespaceBindingUtils.NamespaceResolver builtinNamespaceResolver()
    • namespaceResolver

      public static NamespaceBindingUtils.NamespaceResolver namespaceResolver(RuntimeStaticContext runtimeStaticContext)
    • namespaceResolver

      public static NamespaceBindingUtils.NamespaceResolver namespaceResolver(StaticContext staticContext)
    • namespaceResolver

      public static NamespaceBindingUtils.NamespaceResolver namespaceResolver(Item element)
      Resolves prefixes against an element node's in-scope namespaces.
    • collapseQNameLexical

      public static String collapseQNameLexical(String lexical)
      Applies XSD whiteSpace facet COLLAPSE (as for xs:QName lexical forms).
    • validateConstructedNodeName

      public static void validateConstructedNodeName(Name name, ExceptionMetadata metadata)
      XQuery 3.1 computed constructors: dynamic error [err:XQDY0096] if the node-name has a forbidden prefix/URI pair.
    • validateConstructedAttributeName

      public static void validateConstructedAttributeName(Name name, ExceptionMetadata metadata)
    • normalizeComputedAttributeName

      public static Name normalizeComputedAttributeName(Name name)
      XQuery 3.1 computed attribute constructors: if the attribute QName has a namespace URI but no prefix, an implementation-defined prefix is used. The XML namespace is special-cased to use the required xml prefix.
    • parseLexicalQName

      public static Name parseLexicalQName(String lexical, NamespaceBindingUtils.NamespaceResolver namespaceResolver, ExceptionMetadata metadata)
      Whitespace-collapsed lexical QName to expanded name (xs:QName cast / constructor).
    • parseLexicalQNameForResolveQName

      public static Name parseLexicalQNameForResolveQName(String lexical, NamespaceBindingUtils.NamespaceResolver namespaceResolver, ExceptionMetadata metadata)
      fn:resolve-QName (Functions and Operators 3.1 10.1.1): like parseLexicalQName(java.lang.String, org.rumbledb.runtime.xml.NamespaceBindingUtils.NamespaceResolver, org.rumbledb.exceptions.ExceptionMetadata), but raises err:FONS0004 (NoNamespaceFoundForPrefixException) rather than err:FOCA0002 when the prefix is present but unbound.
    • parseLexicalQNameForComputedAttribute

      public static Name parseLexicalQNameForComputedAttribute(String lexical, NamespaceBindingUtils.NamespaceResolver namespaceResolver, ExceptionMetadata metadata)
      XQuery 3.1 computed attribute constructor: xs:string / xs:untypedAtomic name is converted to an expanded QName. An unprefixed lexical form is a local name in no namespace (not the default element/type namespace). A prefixed form resolves like parseLexicalQName(java.lang.String, org.rumbledb.runtime.xml.NamespaceBindingUtils.NamespaceResolver, org.rumbledb.exceptions.ExceptionMetadata).
    • parseFnQName

      public static Name parseFnQName(String paramUriOrNull, String lexicalQName, ExceptionMetadata metadata)
      XPath and XQuery Functions 3.1 fn:QName: combines an optional namespace URI with a lexical QName. Leading and trailing whitespace is stripped from both arguments (Functions and Operators 3.1, section 10 intro).
      Parameters:
      paramUriOrNull - namespace URI, or null when xs:string? was the empty sequence
      lexicalQName - non-null lexical QName string (after atomization to xs:string)
    • parseNamespaceDeclarationAttribute

      public static String[] parseNamespaceDeclarationAttribute(Item attributeItem)
    • getReservedNamespaceBindingError

      public static NamespaceBindingUtils.ReservedNamespaceBindingError getReservedNamespaceBindingError(String prefix, String uri)
    • validateNamespaceDeclaration

      public static void validateNamespaceDeclaration(String prefix, String uri, ExceptionMetadata metadata)
    • validatePrologNamespaceDeclaration

      public static void validatePrologNamespaceDeclaration(String prefix, String uri, ExceptionMetadata metadata)
      XQuery 3.1, 4.13 Namespace Declaration: "It is a static error [err:XQST0070] if a namespace declaration specifies a prefix of xml or xmlns, or a namespace URI of http://www.w3.org/XML/1998/namespace or http://www.w3.org/2000/xmlns/."
    • validateDefaultNamespaceDeclaration

      public static void validateDefaultNamespaceDeclaration(String uri, ExceptionMetadata metadata)
      XQuery 3.1, 4.14 Default Namespace Declaration: "A static error [err:XQST0070] is raised if a default element namespace declaration or a default function namespace declaration specifies the namespace URI http://www.w3.org/XML/1998/namespace or http://www.w3.org/2000/xmlns/."
    • validateParsedNamespaceBinding

      public static void validateParsedNamespaceBinding(String prefix, String uri)
      Validates a namespace binding coming from parsed XML rather than from an XQuery namespace declaration attribute. Unlike validateNamespaceDeclaration(String, String, ExceptionMetadata), this permits prefixed empty URIs so that XML 1.1 undeclarations such as xmlns:p="" can be preserved in the data model.
    • nameFromElementOrAttributeDomNode

      public static Name nameFromElementOrAttributeDomNode(Node domNode)
      Expanded name for an element or attribute DOM node (namespace-aware when the DOM provides it).
    • nameLocalOnly

      public static Name nameLocalOnly(String localName)
      QName with only a local name and no namespace URI or prefix (XDM processing-instruction target; namespace prefix property absent).