首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在xs:all中使用xs:group

在xs:all中使用xs:group
EN

Stack Overflow用户
提问于 2014-04-09 21:49:04
回答 1查看 111关注 0票数 0

我正在尝试定义我的XSD,但我在使用元素时遇到了问题。

下面是我的XML:

代码语言:javascript
复制
<key>Lambda, People</key>
<dict>
<key>Cost Center</key>
<string>  186B Hello Street, Mangilao</string>
<key>Organisation Path</key>
<string>NOA/NOZ</string>
<key>Phone Number</key>
<string>+1340232103</string>
<key>Room Number</key>
<string>GUM Sales</string>
<key>VoIP</key>
<string></string>
<key>title</key>
<string>Lambda, People</string>
</dict>

下面是我想在我的XSD中使用的:

代码语言:javascript
复制
<!-- <key>title</key><string>...</string> -->
<xs:group name="key_string_title">
<xs:sequence>
    <!-- <key>title</key> -->
    <xs:element name="key" type="xs:string" fixed="title"/>
    <!-- <string>...<string> -->
    <xs:element name="string" type="xs:string"/>                
</xs:sequence>
</xs:group>
<!-- <key>title</key><string>...</string> -->


<!-- <key><string> -->
<xs:group name="key_string">
<xs:sequence>
    <!-- <key>...</key> -->
    <xs:element name="key" type="xs:string"/>
    <!-- <string>...<string> -->
    <xs:element name="string" type="xs:string"/>                
</xs:sequence>
</xs:group>
<!-- <key><string> -->


<!-- <key><dict> Staff -->
<xs:group name="key_dict_staff">
<xs:sequence>
    <!-- <key> -->
    <xs:element name="key" type="xs:string"/>

    <!-- <dict> -->
    <xs:element name="dict">
        <xs:complexType>
            <xs:all>                
                <!-- <key>title</key><string>...</string> -->
                        <xs:group ref="key_string_title"/>

                <!-- <key><string> -->
                <xs:group ref="key_string" minOccurs="0" maxOccurs="unbounded"/>

            </xs:all>
        </xs:complexType>
    </xs:element>
    <!-- </dict> -->

</xs:sequence>
</xs:group>
<!-- </key></dict> Staff -->

不幸的是,我发现在all元素中使用group元素是不可能的。考虑到这一点,我怎么才能做得对呢?我是不是在这种方法中遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2014-04-09 22:48:29

我猜你想说的是,必须只有一个“标题”,而且它可以在序列中的任何地方。您肯定不能以这种方式实现:您违反了XSD中的许多规则,例如“元素声明一致”规则,该规则规定,如果两个兄弟元素具有相同的名称,则它们必须具有相同的类型。

当然,您可以使用XSD1.1中的断言来完成此操作。在XSD1.0中可能有一些创造性的使用唯一性约束的方法,但是如果有,我就看不到它了。

我的方法是将XML实例重新设计成更卫生的东西。请记住,在验证之前总是有转换的选项。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22964654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档