基本的な XPath 操作の実行
XFactory.prepareXPath メソッドを使用して作成された XPathExecutable インスタンスを使用して、 XPath 式を評価することができます。
このタスクについて
XPath 式は、JAXP StreamSource オブジェクトを使用して、 またはプレーンな Java™ ストリング・オブジェクトを使用して、XFactory.prepareXPath メソッドに渡すことができます。結果として得られる XPathExecutable インスタンスはスレッド・セーフであり、複数の XML 入力文書で XPath 式を評価するために再利用できます。
手順
例
以下に、インタープリットされた XPath 式の作成と実行を行う基本的な例を示します。
// Create a string for the XPath expression
String expression = "/doc/something";
// Create the factory
XFactory factory = XFactory.newInstance();
// Create an XPath executable for the expression
XPathExecutable xPathExecutable = factory.prepareXPath(expression);
// Create the input XML source
String xml = "<doc><something>something is selected</something></doc>";
// Execute the expression and store the results in an XSequenceCursor
XSequenceCursor xSequenceCursor = xPathExecutable.execute(new StreamSource(new ByteArrayInputStream(xml.getBytes())));
以下に、コンパイルされた XPath 式の作成と実行を行う基本的な例を示します。
// Create a string for the XPath expression
String expression = "/doc/something";
// Create the factory
XFactory factory = XFactory.newInstance();
// Create a new static context from the factory
XStaticContext xStaticContext = factory.newStaticContext();
// Set the mode to compile for the processor
xStaticContext.setUseCompiler(true);
// Create an XPath executable for the expression
XPathExecutable xPathExecutable = factory.prepareXPath(expression, xStaticContext);
// Create the input XML source
String xml = "<doc><something>something is selected</something></doc>";
// Execute the expression and store the results in an XSequenceCursor
XSequenceCursor xSequenceCursor = xPathExecutable.execute(new StreamSource(new ByteArrayInputStream(xml.getBytes())));
以下に、スキーマ検証を使用して、インタープリットされた XPath 式の作成と実行を行う基本的な例を示します。
// Create a string for the XPath expression
String expression = "/doc/byte cast as my:derived1-byte-enumeration-Type";
// Create the factory
XFactory factory = XFactory.newInstance();
// Create the schema source
String schema = "<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'" +
" targetNamespace='http://www.schematype.ibm.com/UDSimple'" +
" xmlns:my='http://www.schematype.ibm.com/UDSimple'" +
" xmlns:smokey='http://www.schematype.ibm.com/UDSimple'>"
+ " <xsd:simpleType name='derived1-byte-enumeration-Type'>"
+ " <xsd:restriction base='xsd:byte'>"
+ " <xsd:enumeration value='1' />"
+ " <xsd:enumeration value='-1' />"
+ " <xsd:enumeration value='0' />"
+ " <xsd:enumeration value='127' />"
+ " <xsd:enumeration value='-128' />"
+ " <xsd:enumeration value='32' />"
+ " <xsd:enumeration value='-32' />"
+ " <xsd:enumeration value='8' />"
+ " <xsd:enumeration value='-8' />"
+ " <xsd:enumeration value='2' />"
+ " <xsd:enumeration value='-2' />"
+ " </xsd:restriction>"
+ " </xsd:simpleType>"
+ "</xsd:schema>";
// Load schema
factory.registerSchema(new StreamSource(new ByteArrayInputStream(schema.getBytes())));
// Turn on validation
factory.setValidating(true);
// Create a new static context from the factory
XStaticContext xStaticContext = factory.newStaticContext();
// Add new namespace
xStaticContext.declareNamespace("my", "http://www.schematype.ibm.com/UDSimple");
// Create an XPath executable for the expression
XPathExecutable xPathExecutable = factory.prepareXPath(expression, xStaticContext);
// Create the input XML source
String xml = "<doc>" +
" <byte>1</byte>" +
"</doc>";
// Execute the expression and store the results in an XSequenceCursor
XSequenceCursor xSequenceCursor = xPathExecutable.execute(new StreamSource(new ByteArrayInputStream(xml.getBytes())));