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

时间:2011-08-21 19:15:44

标签: xsd

我的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 Schema,这样就不会有两个节点,无论文件中的位置如何都有重复的名称。 应该允许此文件中的任何节点具有无限子节点,任何子级别。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

skaffman是对的,你需要将你的值作为属性或元素包含在内,如果你不确定,w3学校有很好的教程;

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

答案 1 :(得分:0)

您的数据的可能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>

注意:

您可以看到这大致相当于具有三个表的数据库:部门,主题和主题,以及父和子之间的FK关系。这实际上是XML封装的内容,但是在文本形式中,在设计布局时需要牢记这一点。

我已经将所有小写名称用于元素和属性。这是一个个人的事情,因为xsl / xpath区分大小写,所以使所有小写都避免了以后可怕的错误的机会