- Boolean operation in Xpath: Using attributes
- Document doc = docBuilder.parse(filesInDirectory.get(i));
- doc.getDocumentElement().normalize();
- XPath xPath = XPathFactory.newInstance().newXPath();
- XPathExpression expr1 = xPath.compile("//codes[@ class ='class2']/code[@code]");
- Object result1 = expr1.evaluate(doc, XPathConstants.NODESET);
- NodeList nodes1 = (NodeList) result1;
- System.out.println("result length"+":"+nodes1.getLength());
- returns 2.
- if(nodes1.contains(123))
- if(nodes1.contains(123) && nodes1.contains(456))
- and make decision.
- <metadata>
- <codes class="class1">
- <code code="ABC">
- <detail "blah" "blah">
- </code>
- </codes>
- <codes class="class2">
- <code code="123">
- <detail "blah blah"/>
- </code>
- <code code="456">
- <detail "blah blah"/>
- </code>
- </codes>
- </metadata>
- File f = new File("test.xml");
- XPathFactory factory = XPathFactory.newInstance();
- XPath xpath = factory.newXPath();
- InputSource src = new InputSource(new FileInputStream(f));
- Object result = xpath.evaluate("//codes[@class='class2']/code/@code",src,XPathConstants.NODESET);
- NodeList lst = (NodeList)result;
- List<String> codeList = new ArrayList<String>();
- for(int idx=0; idx<lst.getLength(); idx++){
- codeList.add(lst.item(idx).getNodeValue());
- }
- if(codeList.contains("123")){
- System.out.println("123");
- }
- if(codeList.contains("123") && codeList.contains("456")){
- System.out.println("123 and 456");
- }
- XPathExpression expr1 = xPath.compile("//codes[@class]");
- Object result1 = expr1.evaluate(doc, XPathConstants.NODESET);
- NodeList nodes1 = (NodeList) result1;
- if (node.getNodeValue().equals("123"))
- /*/codes[@class]/code[@code = '123' or @code = '456']
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:output omit-xml-declaration="yes" indent="yes"/>
- <xsl:strip-space elements="*"/>
- <xsl:template match="/">
- <xsl:copy-of select=
- "/*/codes[@class]/code[@code = '123' or @code = '456']"/>
- </xsl:template>
- </xsl:stylesheet>
- <metadata>
- <codes class="class1">
- <code code="ABC">
- <detail/>
- </code>
- </codes>
- <codes class="class2">
- <code code="123">
- <detail />
- </code>
- <code code="456">
- <detail />
- </code>
- </codes>
- </metadata>
- <code code="123">
- <detail/>
- </code>
- <code code="456">
- <detail/>
- </code>