XML - 如何定义和使用在同一文件中的多个位置引用的节点

时间:2015-08-07 16:20:12

标签: xml dom

我有一些项目,比如说

this2

我将在多个地方使用。所以,我将拥有一个带有项<group id = "5"> <items> <!-- this2 here--> <items/> <group/> 的XML节点 在其上面

<group id = "87">
    <items> 
        <!-- this5 and this44 here--> 
    <items/>
<group/>

和另一个:

this2

如何在同一XML文件中需要定义要引用的项目?一旦完成,如何引用它们?

TIA。

ps。:我只对提出准确的XML结构感兴趣,以便我可以使用DOM解析器读取它。我不打算定义XSD架构。

// ===============================

我希望在一个地方定义项目<item> 并参考它应该进入的每个小组对它的描述。

这是为this2<group>键入Shapes标记的更好选择 将其复制粘贴到它应该进入的每个HLists标记中。

这是如何在同一个XML文件中以最简单的方式完成的? 一些结构严谨的方式是不值得的 - 我的数据并不是那么长或复杂。 但是 - 必须有一种比复制粘贴更好的方法。

1 个答案:

答案 0 :(得分:0)

您应该能够在内部子集中声明实体并使用DOM解析器读取它。

示例:

<!DOCTYPE doc [
<!ENTITY this '<item name="this" price="that"/>'>
<!ENTITY this2 '<item name="this2" price="that2"/>'>
<!ENTITY this3 '<item name="this3" price="that3"/>'>
]>
<doc>
    <group id="5">
        <items>
            &this2;
        </items>
    </group>
    <group id="87">
        <items>
            &this;
            &this3;
        </items>
    </group>
</doc>

您可以将实体声明移到单独的文件中并使用参数实体引用它们,但这可能不适用于所有DOM解析器。

示例:

<!DOCTYPE doc [
<!ENTITY % ents SYSTEM "ents.mod">
%ents;
]>
<doc>
    <group id="5">
        <items>
            &this2;
        </items>
    </group>
    <group id="87">
        <items>
            &this;
            &this3;
        </items>
    </group>
</doc>