嵌套数据XML设计

嵌套数据XML设计,xml,schema,dtd,Xml,Schema,Dtd,希望在XML中嵌套(无限级别)元素。像这样: <items> <item> <name>Item One</name> <item> <name>Item Two</name> </item> <item> <name>Item Three</name&

希望在XML中嵌套(无限级别)元素。像这样:

<items>
    <item>
        <name>Item One</name>
        <item>
            <name>Item Two</name>
        </item>
        <item>
            <name>Item Three</name>
            <item>
                <name>Item Four</name>
            </item> <!-- etc... -->
        </item>
    </item>
</items>

项目一
项目二
项目三
项目四
不过。在浏览解决方案时,我注意到在的评论中: 尽管上述内容格式良好,但它不会针对任何不合理的DTD进行验证

两件事,嵌套相似元素的更好方法是什么,其次是DTD的设计


更新:希望根据XML模式而不是DTD进行验证。

DTD允许您定义如下递归结构。事实上,如果XML不能处理这个问题,它将是非常无用的

<!ELEMENT items (item*)>
<!ELEMENT item (name,item*)>
<!ELEMENT name (#PCDATA)>

XSD也允许您这样做。只是写得多一点:

<xsd:element name="items">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="item" type="itemType" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
<xsd:complexType name="itemType">
  <xsd:sequence>
    <xsd:element name="name" type="xsd:string"/>
    <xsd:element name="item" type="itemType" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
</xsd:complexType>


我不知道DTD,但您可以在W3C XML模式中实现。:)在前面简要阅读了有关模式的内容,我肯定会使用它而不是DTD。谢谢。我能否确认,这是一种非常令人满意且高效的存储方式,例如,以分层形式存储类别列表。