sax :: attributes
core :: union_find
union–find algorithm using an efficient disjoint-set data structure
# Interface for a list of XML attributes.
module sax::attributes
# Interface for a list of XML attributes.
#
# This interface allows access to a list of attributes in
# three different ways:
#
# * by attribute index;
# * by Namespace-qualified name; or
# * by qualified (prefixed) name.
#
# The list will not contain attributes that were declared
# `#IMPLIED` but not specified in the start tag. It will also not
# contain attributes used as Namespace declarations (`xmlns*`) unless
# the `http://xml.org/sax/features/namespace-prefixes`
# feature is set to `true` (it is `false` by default).
# Because SAX2 conforms to the "Namespaces in XML" specification,
# it does not give namespace declaration attributes a namespace URI.
# Some other W3C specifications are in conflict with that, expecting
# these declarations to be in a namespace.
# Handler code may need to resolve that conflict.
#
# If the namespace-prefixes feature (see above) is `false`,
# access by qualified name may not be available; if the
# `http://xml.org/sax/features/namespaces`
# feature is `false`, access by Namespace-qualified names
# may not be available.
#
# The order of attributes in the list is unspecified, and will
# vary from implementation to implementation.
#
# Note: The original documentation comes from [SAX 2.0](http://www.saxproject.org).
#
# SEE: `sax::helpers::AttributesImpl`
#
# SEE: `sax::ext::DeclHandler.attribute_decl`
interface Attributes
# Return the number of attributes in the list.
fun length: Int is abstract
# Look up an attribute's Namespace URI by index.
#
# Parameters:
#
# * `index`: attribute index.
#
# Returns:
#
# The Namespace URI, or the empty string if none
# is available, or `null` if the index is out of
# range.
#
# SEE: `length`
fun uri(index: Int): nullable String is abstract
# Look up an attribute's local name by index.
#
# Parameters:
#
# * `index`: attribute index.
#
# Returns:
#
# The local name, or the empty string if Namespace
# processing is not being performed, or `null`
# if the index is out of range.
#
# SEE: `length`
fun local_name(index: Int): nullable String is abstract
# Look up an attribute's XML 1.0 qualified name by index.
#
# Parameters:
#
# * `index`: attribute index.
#
# Returns:
#
# The XML 1.0 qualified name, or the empty string
# if none is available, or `null` if the index
# is out of range.
#
# SEE: `length`
fun qname(index: Int): nullable String is abstract
# Look up an attribute's type by index.
#
# The attribute type is one of the strings `CDATA`, `ID`,
# `IDREF`, `IDREFS`, `NMTOKEN`, `NMTOKENS`, `ENTITY`, `ENTITIES`,
# or `NOTATION` (always in upper case).
#
# If the parser has not read a declaration for the attribute,
# or if the parser does not report attribute types, then it must
# return the value `CDATA` as stated in the XML 1.0 Recommentation
# (clause 3.3.3, "Attribute-Value Normalization").
#
# For an enumerated attribute that is not a notation, the
# parser will report the type as `NMTOKEN`.
#
# Parameters:
#
# * `index: Int`: attribute index.
# * `index: String`: XML 1.0 qualified (prefixed) name.
#
# Returns:
#
# The attribute's type as a string, or `null` if the specified
# attribute is not in the list or if qualified names
# are not available.
#
# SEE: `length`
fun type_of(index: Object): nullable String is abstract
# Look up an attribute's value by index.
#
# If the attribute value is a list of tokens (`IDREFS`,
# `ENTITIES`, or `NMTOKENS`), the tokens will be concatenated
# into a single string with each token separated by a
# single space.
#
# Parameters:
#
# * `index: Int`: attribute index.
# * `index: String`: XML 1.0 qualified (prefixed) name.
#
# Returns:
#
# The attribute's value as a string, or `null` if the specified
# attribute is not in the list or if qualified names
# are not available.
#
# SEE: `length`
fun value_of(index: Object): nullable String is abstract
# Look up the index of an attribute by Namespace name.
#
# Parameters:
#
# * `uri`: Namespace URI, or the empty string if
# the name has no Namespace URI.
# * `local_name`: attribute's local name.
#
# Returns:
#
# The index of the attribute, or -1 if it does not
# appear in the list.
fun index_ns(uri: String, local_name: String): Int is abstract
# Look up the index of an attribute by XML 1.0 qualified name.
#
# Parameters:
#
# * `qname`: XML 1.0 qualified (prefixed) name.
#
# Returns:
#
# The index of the attribute, or -1 if it does not
# appear in the list.
fun index_of(qname: String): Int is abstract
# Look up an attribute's type by Namespace name.
#
# See `type_of` for a description
# of the possible types.
#
# Parameters:
#
# * `uri`: Namespace URI, or the empty string if
# the name has no Namespace URI.
#
# * `local_name`: attribute's local name.
#
# Returns:
#
# The attribute type as a string, or `null` if the
# attribute is not in the list or if Namespace
# processing is not being performed.
fun type_ns(uri: String, local_name: String): nullable String is abstract
# Look up an attribute's value by Namespace name.
#
# See `value_of` for a description
# of the possible values.
#
# Parameters:
#
# * `uri`: Namespace URI, or the empty string if
# the name has no Namespace URI.
#
# * `local_name`: attribute's local name.
#
# Returns:
#
# The attribute value as a string, or `null` if the
# attribute is not in the list or if Namespace
# processing is not being performed.
fun value_ns(uri: String, local_name: String): nullable String is abstract
end
lib/sax/attributes.nit:11,1--210,3