仮定...
- 複雑な XML スキーマがあり、他のスキーマ ファイルをインポート/インクルードし、さらに多くのスキーマ ファイルをインポート/インクルードします。
- QName 型として宣言されている値 (つまり、テキスト ノード) を持つこの XML スキーマ内のすべての要素を検索したいと考えています。
- これらの要素の場所 (パス) を XPath ステートメント (例: /foo/bar) として表現したいと考えています。
Java アプリケーションを作成している場合、この仕事に適したテクノロジは何ですか? XSOMのようなスキーマ オブジェクト モデルですか? それはJava XPath APIですか? 他の何か?
編集:SaxonでSCMにアクセスすることをすぐに開始したい人のために(以下のMichael Kayの推奨に従って)、ここにいくつかのJavaコードがあります(例外処理なし):
// Load the XSD into Saxon
Processor processor = new Processor(true);
SchemaManager schemaManager = processor.getSchemaManager();
DocumentBuilder documentBuilder = processor.newDocumentBuilder();
SAXSource saxSource = new SAXSource(new InputSource("path/to/yourSchema.xsd"));
XdmNode schema = documentBuilder.build(saxSource);
schemaManager.load(saxSource);
// Export the SCM
XdmDestination destination = new XdmDestination();
schemaManager.exportComponents(destination);
XdmNode xdmNode = destination.getXdmNode();
System.out.println(xdmNode.toString());