使用XSD限制属性值和元素的值 [英] Restrict the attribute value and the value of the element using XSD
本文介绍了使用XSD限制属性值和元素的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个要求,我需要使用 XSD 限制属性值及其元素的值.我已经能够将属性值限制为其中之一
I have a requirement where I need to restrict the attribute value and its element's value using an XSD. I've been able to restrict the attribute value to one of
JSON
SWAGGER
到目前为止,但我还需要将元素值限制为
so far, but I also need to restrict the element value to one of
letter.c
di.js
也一样.
XML:
<response src="XML">
<resp name="JSON">letter.c</resp>
<resp name="SWAGGER">di.js</resp>
</response>
XSD:
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="response">
<xs:complexType>
<xs:sequence>
<xs:element name="resp" maxOccurs="14" minOccurs="1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="respFilter">
<xs:attribute name="name" use="required"
type="Enum" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="src" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="XML"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:simpleType name="Enum">
<xs:restriction base="xs:string">
<xs:enumeration value="JSON">
</xs:enumeration>
<xs:enumeration value="SWAGGER">
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="respFilter">
<xs:restriction base="xs:string">
<xs:minLength value="0"></xs:minLength>
<xs:maxLength value="1064"></xs:maxLength>
</xs:restriction>
</xs:simpleType>
</xs:schema>
有什么办法可以使用 XSD 限制它们吗?
Is there a way I can restrict both of them using an XSD?
推荐答案
当然,只需像对 resp/@name
属性所做的那样使用 xs:enum
.
Sure, just use xs:enum
as you've done for the resp/@name
attribute.
替换
<xs:simpleType name="respFilter">
<xs:restriction base="xs:string">
<xs:minLength value="0"></xs:minLength>
<xs:maxLength value="1064"></xs:maxLength>
</xs:restriction>
</xs:simpleType>
与
<xs:restriction base="xs:string">
<xs:maxLength value="1064"/>
<xs:enumeration value="letter.c"/>
<xs:enumeration value="di.js"/>
</xs:restriction>
附注:
- 使用自闭合标签提高可读性.
- 您的
xs:minLength value="0"
对xs:string
基数是多余的.
- Use self-closing tags to improve readability.
- Your
xs:minLength value="0"
against axs:string
base was superfluous.
这篇关于使用XSD限制属性值和元素的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文