具有所有唯一节点名称的XML XSD

具有所有唯一节点名称的XML XSD,xsd,Xsd,我的XML文件如下所示: <Fields> <Humanities> <Performing_Arts> <Dance /> <Music /> </Performing_Arts> <Visual_Arts> <Painting /> <Sculptue /> </Visual_Arts

我的XML文件如下所示:

<Fields>
<Humanities>
    <Performing_Arts>
        <Dance />
        <Music />
    </Performing_Arts>
    <Visual_Arts>
        <Painting />
        <Sculptue />
    </Visual_Arts>
</Humanities>
<Social_Sciences>
    <Psychology>
        <Cultural_Psychology />
        <Social_Psychology />
    </Psychology> 
</Social_Sciences>
</Fields>

我想为这个文件编写一个XML模式,这样无论文件中的位置如何,两个节点都不能有重复的名称。 此文件中的任何节点都应允许有无限的子节点,可以连接到任何子级别


我该如何实现这个目标?

斯卡夫曼说得很对,你需要将你的值作为属性或元素括起来,如果你不确定,w3学校在这方面有很好的教程


http://www.w3schools.com/xml/xml_attributes.asp

您的数据可能的xml表示形式的一个示例是:

<fields>
    <department name="Humanities">
        <subject name="Peforming Arts">
            <topic name="Dance"/>
            <topic name="Music"/>
        </subject>
        <subject name="Visual Arts">
            <topic name="Painting"/>
            <topic name="Sculpture"/>
        </subject>
    </department>
    <department name="Social Sciences">
        <subject name="Psychology">
            <topic name="Cultural Psychology"/>
            <topic name="Social Psychology"/>
        </subject>
    </department>
</fields>

注:

您可以看到,这大致相当于一个包含三个表的数据库:department、subject和topic,以及父级和子级之间的FK关系。这确实是XML封装的内容,但是是以文本形式封装的,并且是在设计布局时要记住的事情


我对元素和属性使用了所有小写名称。这是个人的事情,因为xsl/xpath是区分大小写的,所以将所有内容都小写可以避免以后出现可怕的错误

这不是好的XML设计。数据应编码为属性或元素值,而不是元素名称本身。XML模式在这里对您没有帮助。谢谢。我会尝试不同的方法。