用XML表示深度嵌套的数据

用XML表示深度嵌套的数据,xml,database,database-design,Xml,Database,Database Design,我有以下数据模式的数据: Software + | | Microsoft | + | +--->Windows 10 +-->+ | +--->Windows 7 | | Google | + | +-->Chrome +-->+ +-->Orkut 我想以最佳的方式嵌套它,任何XML解析器都可以对其进行编辑,我最初的想法是这样做: <?xml version="1.0"?> <Software Name =

我有以下数据模式的数据:

Software
+
|
|  Microsoft
|   +
|   +--->Windows 10
+-->+
|   +--->Windows 7
|
| Google
|   +
|   +-->Chrome
+-->+
    +-->Orkut
我想以最佳的方式嵌套它,任何XML解析器都可以对其进行编辑,我最初的想法是这样做:

<?xml version="1.0"?>
<Software Name = "Company Software">
  <HeadProduct Name = "Google">
    <Product>Chrome</Product>
    <Product>Orkut</Product>
  </HeadProduct>
  <HeadProduct Name = "Microsoft">
    <Product>Windows 10</Product>
    <Product>Windows 7</Product>
  </HeadProduct>
</Software>

铬
奥库特
视窗10
视窗7
然而,我的直觉告诉我这是一个问题,绝对不是我想要的。原因如下:

虽然
Google
Microsoft
只是属性,
windows10
Orkut
是元素。我想到了一个我也会喜欢
Google
Microsoft
的地方。总而言之,我认为我没有正确地将模式转换为XML


任何帮助都是有益的。

如果您想避免属性,这可能对您有用

<?xml version="1.0"?>
<Software>
    <Name>Company Software</Name>
    <HeadProducts>
        <HeadProduct>
            <Name>Google</Name>
            <Products>
                <Product>Chrome</Product>
                <Product>Orkut</Product>
            </Products>
        </HeadProduct>
        <HeadProduct>
            <Name>Microsoft</Name>
            <Products>
                <Product>Windows 10</Product>
                <Product>Windows 7</Product>
            </Products>
        </HeadProduct>
    </HeadProducts>
</Software>

公司软件
谷歌
铬
奥库特
微软
视窗10
视窗7

任何XML解析器都可以读取任何XML,因此这不是一个好的要求,因为它总是正确的。你认为“最佳”的东西是非常主观的。有一些XML结构比其他结构更有意义,但这是a)一个连续统一体,而不是绝对统一体;b)它取决于许多因素,如果没有上下文,很难决定在任何给定情况下什么更有意义。@Tomalak老实说,我没有非常复杂的上下文。这就是我问题背后的原因:如果我理解你的意思:
…谷歌……