的縮寫誰能解釋什麼是的XPath - position()函數
/root/a[position()=1 or position()=2
和
/root/a[1 or 2]
之間的區別? 我假設第二個是第一個的縮寫形式,但是Java XPath(Sun JDK 1.6.0)處理器認爲不然。以下是我的測試應用程序。
libxml2庫和db2 XPath處理器也認爲這些路徑不同。所以它看起來不像JDK的bug。
import java.io.*;
import javax.xml.xpath.*;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
public class XPathTest {
public static void main(String[] args) throws Exception {
//String xpathStr = "/root/a[position()=1 or position()=2]";
String xpathStr = "/root/a[1 or 2]";
XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
Reader irdr = new StringReader(
"<root><a name=\"first\"/><a name=\"second\"/><a name=\"third\"/></root>");
InputSource isrc = new InputSource(irdr);
XPathExpression expr = xp.compile(xpathStr);
Object result = expr.evaluate(isrc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
Element element = (Element) node;
System.out.print(element.getNodeName() + " " + element.getAttributeNode("name"));
System.out.println();
}
}
}
我猜@安頓不會回來,但如果他確實應該將[生鏽的答案](http://stackoverflow.com/a/7525994/539490)標記爲正確 – AJP