XML Schema中如何通过XML node中名为type的attribute约束实际内容范围?
比如,我有一个如下的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论