我有一个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文件中的数据以某种方式“动态”。也就是说,它可能会通过在这三个级别中添加,移动,删除具有未指定名称的节点来进行扩展,编辑或以其他方式更改。
在第三级以下,节点应具有已定义的名称。根节点下面的第三层上的每个节点应具有零个或一个具有名称“描述”的子节点,该子节点又具有名称为“ShortDesc”和“Field”的子节点。另一方面,“Field”应具有零到多个名为“Value”的字段。
根节点的所有子节点都应具有已定义名称的属性。具有未指定名称的根节点下的级别1 - 3上的所有节点必须具有“id”属性。定义名称低于3级的节点都应具有已定义的属性,具体取决于其类型。
问题是,如何在XML Scheme中指定所有这些要求和选项?