如何在Xpath中使用标记化函数



我们可以在XPath 中使用标记化函数吗

我用来处理XSLT和XML文件的通用java代码是:

XPath xPath = XPathFactory.newInstance().newXPath();
InputSource inputXML = new InputSource(new StringReader(xml));
String expression = "/root/customer/personalDetails[age=tokenize('20|30','|')]/name";
boolean evaluate1 = (boolean) xPath.compile(expression).evaluate(inputXML, XPathConstants.BOOLEAN);

XML:-

<?xml version="1.0" encoding="ISO-8859-15"?>
<root>
<customer>
<personalDetails>
<name>ABC</name>
<value>20</value>
</personalDetails>
<personalDetails>
<name>XYZ</name>
<value>21</value>
</personalDetails>
<personalDetails>
<name>PQR</name>
<value>30</value>
</personalDetails>
</customer>
</root>

预期响应:-ABC、PQR

是的,您可以在XPath中使用tokenize()函数,前提是您的XPath处理器支持XPath 2.0或更高版本。

对于Java,XPath 2.0+处理器的流行选择是Saxon。

您可以将JAXP API与Saxon一起使用,但是,它的设计并不能很好地与XPath2.0+配合使用,因此最好使用Saxon自己的API(称为s9api(。

对于这个特定的示例,您不需要tokenize()。在XPath2.0+中,您可以编写

[age=('20', '30')]

最新更新