示例:对 XML 数据中的名称空间建立索引

以下 XML 分段包含名称空间 book:title
<book>
<book:title>Graph Theory</book:title>
<author>Stewart</author>
<date>January 14, 2006</date>
</book>
可以在已禁用 include_namespaces 参数的情况下创建 bts 索引,如以下语句所示:
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;
在这种情况下,将忽略名称空间前缀 book:。 此索引将具有以下字段。
/book/title:graph theory
/book/author:stewart
/book/date:january 14, 2006
可以在已启用 include_namespaces 参数的情况下创建 bts 索引,如以下语句所示:
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;
在这种情况下,带有名称空间 book:title 的标记为第一个字段。此索引具有以下字段:
/book/book:title:graph theory
/book/author:stewart
/book/date:january 14, 2006
要搜索字段 /book/book:title: 以查找文本 theory,请使用以下搜索谓词:
bts_contains("/book/book\:title:theory")
如果使用 xmltags 参数指定了标记,那么可以使用 include_namespaces 参数以不同组合对带/不带名称空间的标记建立索引。例如,假定存在以下 XML 分段:
<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>
要仅对 title 标记建立索引,请使用以下格式:
CREATE INDEX bookstore_bts ON bookstores(xml_data bts_lvarchar_ops) 
USING bts(xmltag="(title)",include_namespaces="yes) 
IN bts_sbspace;

即使启用了 include_namespaces 参数,索引仍然会仅包含一个字段,这是因为字段 bns1:titlebns2:title 不匹配指定的标记 title

如果要对名称空间建立索引,请在指定的标记中包含名称空间前缀。例如,如果使用以下格式:
CREATE INDEX bookstore_bts ON bookstores(xml_data bts_lvarchar_ops) 
USING bts(xmltag="(title,bns1:title)",include_namespaces="yes) 
IN bts_sbspace;
此索引将包含以下字段:
title: Marine Buyers' Guide
bns1:title: Toy Catalog