是否可以创建支持父节点和具有相同名称的子节点的xsd?

时间:2010-07-29 22:47:17

标签: xml xsd

所以在任何人告诉我我不应该这样做之前,我完全同意。但是我有一个来自第三方的xml DataFeed。我已经和他们联系,看看他们是否可以改变它,但我想我最好从双方攻击它。

XML中的违规标签如下:

    <Tags>
      <TagDimension id="Topic">
        <ExternalId>Topic</ExternalId>
        <Tags>
          <Tag>
            <Label>awesome</Label>
          </Tag>
        </Tags>
      </TagDimension>
    </Tags>

我绝不是XML / XSD专家。我的技能包括从VS命令行运行xsd.exe,它带来了我:

C:\ temp&gt; xsd sample.xml Microsoft(R)Xml架构/数据类型支持实用程序 [Microsoft(R).NET Framework,版本2.0.50727.3038] 版权所有(C)Microsoft Corporation。版权所有。 错误:处理'sample.xml'时出错。    - 表(标签)在嵌套关系中不能是子表。

处理此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我发现“一种方式”虽然我不确定它是一种好方法。看起来XSD文件对递归命名的节点没有任何问题。它只是xsd.exe工具。我所做的是将内部<Tag>节点重命名为<Tag2>,这允许我生成xsd文件。然后我在Visual Studio中打开了xsd并将其重命名为<Tag>

看起来这更像是我对工具的依赖以及对XSD / XML缺乏了解的结果,但如果有更多知识渊博的人会对此感兴趣,我会很高兴。