我有一个 XML 文件,它由一个定义名为“IDTree”的根节点组成。这个节点应该包含三个级别的未定义名称的后代,因为我需要在应用程序中使用 XPath 来漂亮地处理这个 XML 文件中的特定值。
例子:
<IDTree>
<Foofoo id="0x00">
<Foobar id="0x00">
<Boofar id="0x00" />
<Fasfoo id="0x01" />
<Farfoo id="0x02" />
</Foobar>
<Foobas id="0x01">
<Bas id="0x00" />
<Bar id="0x01" />
<Foo id="0x02" />
</Foobas>
</Foofoo>
</IDTree>
我需要通过使用“/IDTree/Foofoo/Foobas/Bar”之类的 XPath 来处理这些节点,将它们转换为三个值,例如 0x00 0x01 0x01。
存储在此 XML 文件中的数据在某种程度上是“动态的”。也就是说,它可能会通过在这三个级别中添加、移动、删除具有未指定名称的节点来扩展、编辑或以其他方式更改。
然而,在第三层以下的节点应具有定义的名称。根节点以下第三层的每个节点都应有零个或一个名为“Description”的子节点,而子节点又应具有名为“ShortDesc”和“Field”的子节点。另一方面,“字段”应具有零到多个名为“值”的字段。
根节点的所有子节点都应具有定义名称的属性。根节点以下 1 - 3 层的所有节点,名称未指定,必须具有“id”属性。第 3 级以下的具有已定义名称的节点都应根据其类型具有已定义的属性。
问题是,如何在 XML 方案中指定所有这些要求和选项?