私はこのようなXMLを持っています
<Authors>
<Author name='Some Author'>
<Book>B1</Book>
<Book>B2</Book>
<Book>B3</Book>
</Author>
</Authors>
Book を使用してこの xml に対して xpath クエリを実行し、著者名を表示したいのですが、xpath クエリは大文字と小文字を区別しない必要があります。
使ってみた
Author[translate(Book,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='b1'
しかし、このクエリは、b1 でクエリを実行している場合にのみ値を返します。クエリが b2 または b3 を使用している場合、null が返されます。
私はJavaでこれをやっています:
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
XPathExpression xPathExpression = xPath.compile(
"Authors/Author[translate(Book,'ABCDEFGHIJKLMNOPQRSTUVWXYZ'," +
"'abcdefghijklmnopqrstuvwxyz')='b2']");
ret_nodelist = (NodeList) xPathExpression.evaluate(doc,XPathConstants.NODESET);