Example: Index namespaces in XML data
The following XML fragment contains the namespace book:title:
<book>
<book:title>Graph Theory</book:title>
<author>Stewart</author>
<date>January 14, 2006</date>
</book>
You can create a bts index with
the include_namespaces parameter disabled as
in the statement:
CREATE INDEX books_bts ON books(xml_data bts_lvarchar_ops)
USING bts(all_xmltags="yes",include_namespaces="no",xmlpath_processing="yes")
IN bts_sbspace;
In that case, the namespace prefix book: is
ignored. The index will have the following fields.
/book/title:graph theory
/book/author:stewart
/book/date:january 14, 2006
Also, you can create
a bts index with the include_namespaces parameter
enabled, as in the statement:
CREATE INDEX books_bts ON books(xml_data bts_lvarchar_ops)
USING bts(all_xmltags="yes",include_namespaces="yes",xmlpath_processing="yes")
IN bts_sbspace;
In that case, the tag with the namespace book:title is
the first field. The index has the following fields:
/book/book:title:graph theory
/book/author:stewart
/book/date:january 14, 2006
To search the field /book/book:title: for
the text theory, use the search predicate:
bts_contains("/book/book\:title:theory")
When
you specify tags with the xmltags parameter,
you can index the tags with and without namespaces in different combinations
using the include_namespaces parameter. For example,
given the XML fragments:
<bsns:bookstore>
<title> Marine Buyers' Guide </title>
<bns2:title> Boat Catalog </bns2:title>
</bsns:bookstore>
<bsns:bookstore>
<bns1:title> Toy Catalog </bns1:title>
<bns2:title> Wish Book </bns2:title>
</bsns:bookstore>
To index only the title tag,
use the format:
CREATE INDEX bookstore_bts ON bookstores(xml_data bts_lvarchar_ops)
USING bts(xmltag="(title)",include_namespaces="yes)
IN bts_sbspace;
Even though the include_namespaces parameter is enabled, the index will contain only one field because the fields bns1:title and bns2:title do not match the specified tag title.
If you want
to index a namespace, include the namespace prefix in the specified
tags. For example if you use the format:
CREATE INDEX bookstore_bts ON bookstores(xml_data bts_lvarchar_ops)
USING bts(xmltag="(title,bns1:title)",include_namespaces="yes)
IN bts_sbspace;
The index will contain the fields:
title: Marine Buyers' Guide
bns1:title: Toy Catalog