Last Reviewed: August 30, 2004
Article: DTS0195
Applies to: dtSearch Engine 6
<name first="John" last="Smith" />
This is indexed as it if were:
<name>
<first>John</first>
<last>Smith</last>
</name>
In some cases, though, the intent of an attribute is to modify the field name, not to provide a value. Example:
<name type="first">John</name>
<name type="last">Smith</name>
The default treatment of XML attributes in dtSearch makes it difficult to search for a first name that was stored with this use of attributes. (A search for "(/name/type contains first) and (/name contains John)" will match any document that contains a "first" value in the "/name/type" field and also "John" in a /name field. However, these may be different /name fields in the same document.) A simple transformation can be performed on the XML that will cause the fields to be indexed in a way that permits searching on a first name. To do this, replace the attribute with a generated field that combines the attribute and named value, like this:
<name>
<TypeFirst>John</type_first>
<TypeLast>Smith</type_last>
</name>
With this field structure, a search can be limited to the first name field as follows:
/name/TypeFirst contains John
See also:
How to combine field and attribute searches in XML
Copyright © 1995-2005 dtSearch Corp.