int node1;
java.util.Vector node2Strings = null;
while (DTM.NULL != (node1 = list1.nextNode()))
{
XMLString s1 = getStringFromNode(node1);
if (null == node2Strings)
{
int node2;
while (DTM.NULL != (node2 = list2.nextNode()))
{
XMLString s2 = getStringFromNode(node2);
if (comparator.compareStrings(s1, s2))
{
result = true;
break;
}
if (null == node2Strings)
node2Strings = new java.util.Vector();
node2Strings.addElement(s2);
}
}
else
{
int n = node2Strings.size();
for (int i = 0; i < n; i++)
{
if (comparator.compareStrings(s1, (XMLString)node2Strings.elementAt(i)))
{
result = true;
break;
}
}
}
}
list1.reset();
list2.reset();
}
else if (XObject.CLASS_BOOLEAN == type)
{
// From http://www.w3.org/TR/xpath:
// If one object to be compared is a node-set and the other is a boolean,
// then the comparison will be true if and only if the result of
// performing the comparison on the boolean and on the result of
// converting the node-set to a boolean using the boolean function
// is true.
double num1 = bool() ? 1.0 : 0.0;
double num2 = obj2.num();
result = comparator.compareNumbers(num1, num2);
}
else if (XObject.CLASS_NUMBER == type)
{
// From http://www.w3.org/TR/xpath:
// If one object to be compared is a node-set and the other is a number,
// then the comparison will be true if and only if there is a
// node in the node-set such that the result of performing the
// comparison on the number to be compared and on the result of
// converting the string-value of that node to a number using
// the number function is true.
DTMIterator list1 = iterRaw();
double num2 = obj2.num();
int node;
while (DTM.NULL != (node = list1.nextNode()))
{
double num1 = getNumberFromNode(node);
if (comparator.compareNumbers(num1, num2))
{
result = true;
break;
}
}
list1.reset();
}
else if (XObject.CLASS_RTREEFRAG == type)
{
XMLString s2 = obj2.xstr();
DTMIterator list1 = iterRaw();
int node;
while (DTM.NULL != (node = list1.nextNode()))
{
XMLString s1 = getStringFromNode(node);
if (comparator.compareStrings(s1, s2))
{
result = true;
break;
}
}
list1.reset();
}
else if (XObject.CLASS_STRING == type)
{
// From http://www.w3.org/TR/xpath:
// If one object to be compared is a node-set and the other is a
// string, then the comparison will be true if and only if there
// is a node in the node-set such that the result of performing
// the comparison on the string-value of the node and the other
// string is true.
XMLString s2 = obj2.xstr();
DTMIterator list1 = iterRaw();
int node;
while (DTM.NULL != (node = list1.nextNode()))
{
XMLString s1 = getStringFromNode(node);
if (comparator.compareStrings(s1, s2))
{
result = true;
break;