XPath over XML Schema: Examples
Contents
Sample XSD used in examples Boilerplate
Examples: 1, 2, 3, 4, 5, 6 (more examples in the download).
Boilerplate
import java.io.File; import java.io.IOException; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlOptions; import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument; import xpath.PathElement; import xpath.XPath; import xpath.XPathException; import xpath.schema.Node; import xpath.schema.SchemaData; public class XPathExample { public static void main(String[] args) { Hashtable<String,String> file2prefix = new Hashtable<String,String>(); file2prefix.put("example.xsd", "ex"); SchemaData schData = loadSchemas(file2prefix); if (schData == null) System.out.println("Error loading schemas"); else { example1(schData); example2(schData); example3(schData); example4(schData); example5(schData); example6(schData); } } public static SchemaData loadSchemas(Hashtable<String,String> file2prefix) { SchemaData schData = new SchemaData(); // loading options. Used to instruct loading of line numbers // (line numbers are used to find nodes in the schema file) XmlOptions options = new XmlOptions(); options.setLoadLineNumbers(); options.setLoadLineNumbers(XmlOptions.LOAD_LINE_NUMBERS_END_ELEMENT); for (Entry<String,String> xsd: file2prefix.entrySet()) { SchemaDocument schema = null; try { File file = new File(xsd.getKey()); schema = SchemaDocument.Factory.parse(file, options); } catch (XmlException e) { System.err.println(e.getMessage()); return null; } catch (IOException e) { System.err.println(e.getMessage()); return null; } schData.add(xsd.getValue(), schema); } return schData; } public static void printMatchedNodes(List<PathElement> matched) { System.out.println("Matched nodes:"); for (PathElement pe: matched) { System.out.println(pe.toString()); } } }