我希望为文件和目录结构映射定义一个对象模型,其中文件是 XML 和专有格式的混合。
我想以尽可能标准和可移植的方式做到这一点,而不必编写大量样板代码来将专有格式映射到对象模型中。也许这些专有格式可以使用 ASN.1 来定义。
此目录结构还可能包含压缩文件,这些文件必须可用作虚拟文件系统。
我希望能够以规范的方式交叉引用目录结构中的文件。
模式类型具有良好的 Java 支持和良好的 C++ 支持是很重要的。Python 和其他语言将是一个奖励。
它应该允许文件结构的嵌套变体和每个级别的规范变体规范。
目录结构可能存在变体,但总会有规范的布局。
例如(使用 Java/VFS2 风格的文件名格式)
规范格式:
major
minor
binaryFileDDMMYY01.bin
auditFileDDMMYY01.xml
/elements
/element[0]...
binaryFileDDMMYY02.bin
auditFileDDMMYY02.xml
一个变种:
major
minor
12.zip!
binaryFileDDMMYY01.bin
auditFileDDMMYY01.xml
/elements
/element[0]...
binaryFileDDMMYY02.bin
auditFileDDMMYY02.xml
由于我已经在使用 XML 并且 XML 具有外部参照/链接元素,因此 XML 似乎是显而易见的格式。但是无论我使用什么事实上的格式,我都需要连接到解析器/对象模型中,以将专有格式映射到与我选择的任何框架的对象模型一起使用的东西(在 Java 上,也许是映射到的专有 SAX/DOM 实现) /from 文件格式),可能使用自定义 URL 格式(VFS2 样式)或模式扩展来定义它们,例如:
<xref href="zip:/major/minor/12.zip!auditFileDDMMYY01.xml"/>
和
<xref href="acme:zip:/major/minor/12.zip!binaryFileDDMMYY01.bin"/>
或者
<xref format="acme" href="zip:/major/minor/12.zip!binaryFileDDMMYY01.bin"/>
是否有任何替代 XSD 模式可以更好地实现这一目标的方法?它不必是特定于 XML 的,但必须满足 XML 交换。