假设...
- 我有一个复杂的 XML 模式,它导入/包含其他模式文件,而这些文件又导入/包含更多模式文件。
- 我想在这个 XML 模式中找到所有具有声明为 QName 类型的值(即文本节点)的元素。
- 我希望将这些元素的位置(路径)表示为 XPath 语句(例如,/foo/bar)。
如果我正在编写 Java 应用程序,那么适合这项工作的技术是什么?它是像XSOM这样的模式对象模型吗?是Java XPath API吗?还有什么?
编辑:对于那些想要快速开始访问撒克逊 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());