XML Schema中如何通过XML node中名为type的attribute约束实际内容范围?

发布于 2022-09-01 20:58:14 字数 2358 浏览 26 评论 0

比如,我有一个如下的xml,param可能有任意多个,通过type指定param值的类型

<operation name="func">
    <param name="a" type="string">up</param>
    <param name="b" type="integer">5</param>
    <param name="c" type="CustomList">
        <list>
            <idx>0</idx>
            <name>ZZZZ</name>
            <value>0.5464</value>
        </list>
        <list>
            <idx>1</idx>
            <name>YYYY</name>
            <value>0.464</value>
        </list>
        ....
    </param>
</operation>

然后问题就来了,我如何通过XML Schema来约束数据合法性呢?
下面这种肯定是错的,然而因为验证器的版本问题,无法支持xs:alternative
有什么方法能够在XML Schema 1.0框架内完成这种约束,还是说XML Schema 1.0就做不到呢?

<xs:complexType name="CustomListNode">
    <xs:sequence>
        <xs:element name="idx" type="xs:integer" />
        <xs:element name="name" type="xs:string" />
        <xs:element name="value" type="xs:decimal" />
    </xs:sequence>
</xs:complexType>

<xs:complexType name="CustomList">
    <xs:sequence>
        <xs:element name="list" type="CustomListNode" maxOccurs="unbounded"/>
    </xs:sequence>
</xs:complexType>

<xs:element name="operation">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="param" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:NOTATION">
                            <xs:attribute name="name" type="xs:string" use="required" />
                            <xs:attribute name="type" type="xs:integer" use="required" />
                            <xs:attribute name="type" type="xs:string" use="required" />
                            <xs:attribute name="type" type="CustomList" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string" use="required" />
    </xs:complexType>
</xs:element>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文