#include <DbXml.hpp> void XmlContainer::addIndex( const std::string &uri, const std::string &name, const std::string &index, XmlUpdateContext &context) XmlContainer::addIndex( XmlTransaction &txn, const std::string &uri, const std::string &name, const std::string &index, XmlUpdateContext &context) XmlContainer::addIndex( const std::string &uri, const std::string &name, XmlIndexSpecification::Type type, XmlValue::Type syntax, XmlUpdateContext &context) XmlContainer::addIndex( XmlTransaction &txn, const std::string &uri, const std::string &name, XmlIndexSpecification::Type type, XmlValue::Type syntax, XmlUpdateContext &context)
Adds an index of the specified type for the named document node. These method are for convenience — see XmlIndexSpecification::addIndex for more information.
You can provide an index specification as a string value, or as enumerated types.
#include <DbXml.hpp> void XmlContainer::addIndex( const std::string &uri, const std::string &name, const std::string &index, XmlUpdateContext &context) XmlContainer::addIndex( XmlTransaction &txn, const std::string &uri, const std::string &name, const std::string &index, XmlUpdateContext &context)
Identifies one or more indexing strategies to set for the identified node. The strategies are identified as a space-separated listing of strings.
Parameters are:
If the operation is to be transaction-protected, this parameter is an XmlTransaction handle returned from XmlManager::createTransaction.
The namespace of the node to be indexed. The default namespace is selected by passing an empty string for the namespace.
A comma-separated list of strings that represent the indexing strategy. The strings must contain the following information in the following order:
unique
-{path type}-{node type}-{key type}-{syntax}
where:
unique indicates that the indexed value is unique in the container. If this keyword does not appear on the index string, then the indexed value is not required to be unique in the container.
{path type} is either node
or edge
.
{node type} is one of element
,
attribute
, or
metadata
. If
metadata
is specified, then
{path type} must be node
.
{key type} is one of presence
, equality
, or
substring
.
{syntax} identifies the type of information being indexed. It must be one of the following values:
none | double | gYear |
base64Binary | duration | gYearMonth |
boolean | float | hexBinary |
date | gDay | string |
dateTime | gMonth | time |
decimal | gMonthDay |
Note that if {key type} is presence
, then {syntax} must be
none
or simply not specified.
Some example index strings are:
unique-node-element-presence node-element-equality-string edge-element-presence-none node-element-equality-float
#include <DbXml.hpp> XmlContainer::addIndex( const std::string &uri, const std::string &name, XmlIndexSpecification::Type type, XmlValue::Type syntax, XmlUpdateContext &context) XmlContainer::addIndex( XmlTransaction &txn, const std::string &uri, const std::string &name, XmlIndexSpecification::Type type, XmlValue::Type syntax, XmlUpdateContext &context)
Identifies an indexing strategy to set for the identified node. The strategy is set using enumeration values for the index and the syntax.
Parameters are:
If the operation is to be transaction-protected, this parameter is an XmlTransaction handle returned from XmlManager::createTransaction.
The namespace of the node to be indexed. The default namespace is selected by passing an empty string for the namespace.
A series of XmlIndexSpecification::Type
values bitwise
OR'd together to form the index strategy.
To indicate whether the indexed value must be unique container-wide, use one of the following, or leave the value out entirely:
XmlIndexSpecification::UNIQUE_OFF
XmlIndexSpecification::UNIQUE_ON
To identify the path type, use one of the following:
XmlIndexSpecification::PATH_NODE
XmlIndexSpecification::PATH_EDGE
To identify the node type, use one of the following:
XmlIndexSpecification::NODE_ELEMENT
XmlIndexSpecification::NODE_ATTRIBUTE
XmlIndexSpecification::NODE_METADATA
Note that if
XmlIndexSpecification::NODE_METADATA
is
used, then
XmlIndexSpecification::PATH_NODE
must
also be used as well.
To identify the key type, use one of the following:
XmlIndexSpecification::KEY_PRESENCE
XmlIndexSpecification::KEY_EQUALITY
XmlIndexSpecification::KEY_SUBSTRING
For example:
XmlIndexSpecification::PATH_NODE | XmlIndexSpecification::NODE_ELEMENT | XmlIndexSpecification::KEY_SUBSTRING
Identifies the type of information being indexed. The value must be one of the XmlValue enumerated types:
XmlValue::NONE
XmlValue::BASE_64_BINARY
XmlValue::BOOLEAN
XmlValue::DATE
XmlValue::DATE_TIME
XmlValue::DECIMAL
XmlValue::DOUBLE
XmlValue::DURATION
XmlValue::FLOAT
XmlValue::G_DAY
XmlValue::G_MONTH
XmlValue::G_MONTH_DAY
XmlValue::G_YEAR
XmlValue::G_YEAR_MONTH
XmlValue::HEX_BINARY
XmlValue::STRING
XmlValue::TIME
Note that if XmlIndexSpecification::KEY_PRESENCE
is
specified for the type
parameter, then this parameter must be
XmlValue::NONE
.
The XmlContainer::addIndex
method
may fail and throw
XmlException
, encapsulating one of the
following non-zero errors:
An error occurred in an underlying Berkeley DB database. The XmlException::getDbErrno method will return the error code for the error.