を制限し、このポストは、ポストの拡張である:Restrict the attribute value and the value of the element using XSDは、XMLリクエスト属性値と要素値の数
今、私はXSDを使用して、すべての属性&要素の値を制限することができますよ。しかし、私は現在、要素の値のうちの1つまたは2つだけを制限し、それらのすべてを制限するつもりはない。
XML:
<response src="XML">
<resp name="JSON">letter.c</resp>
<resp name="SWAGGER">di.js</resp>
<resp name="BI">bi.j</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:enumeration value="BI">
</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:enumeration value="letter.c"/>
<xs:enumeration value="di.js"/>
<xs:enumeration value="bi.j"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
このXSDのみ上記のXML要求を許可します。
しかし、私は」 XSDが以下のすべての要求を検証するように、いくつかの要素値を動的に許可することです。
1.
<response src="XML">
<resp name="JSON">letter.c</resp>
<resp name="SWAGGER"></resp>
<resp name="BI">bi.j</resp>
</response>
2.
<response src="XML">
<resp name="JSON">letter.c</resp>
<resp name="SWAGGER">23.x</resp>
<resp name="BI">bi.j</resp>
</response>
3.
<response src="XML">
<resp name="JSON">letter.c</resp>
<resp name="SWAGGER">di.js</resp>
<resp name="BI">dj.c</resp>
</response>
だから、基本的には、属性JSONは常に、中letter.c以外のものをletter.cを持っていますJSONはXSDによって破棄されるべきです。一方、属性SWAGGER & BIは、その中に任意の値または空の値を持つことができます。
あなたがしようとしていることを十分に理解していなくても、検証のためにXSD 1.1が必要なように感じます。 (1)それは選択肢ですか? (2)あなたの要件は不明です。最小限には、JSONのletter.c以外のものはXSD *によって破棄されるべきであることを説明してください。 XSDが*バリデーション*であることを認識し、何も破棄しません。 – kjhughes
1. XSD 1.1はオプションではありません。 2. letter.c以外のものがJSONの値として提供された場合、XSDによって検証されるべきではないと言っていました。それを私が間違った言葉を捨てました。 – Sierra