我正在尝试为这个XML结构编写XML Schema:
<castle>
<parameters>
<firstParameter>text</firstParameter>
<secondParameter>
<list>
<item>a</item>
<item>b</item>
<item>c</item>
</list>
</secondParameter>
<thirdParameter>
<array>
<item>a</item>
<item>b</item>
<item>c</item>
</array>
</thirdParameter>
<fourthParameter>
<parameters>
<firstParameter>text</firstParameter>
<secondParameter>
<list>
<item>a</item>
<item>b</item>
<item>c</item>
</list>
</secondParameter>
</parameters>
</fourthParameter>
</parameters>
</castle>
我不知道如何用任何名称指定元素。我实际的XSD是这样的:
<xs:element name="parameters">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:any processContents="skip" namespace="##targetNamespace"/>
</xs:choice>
</xs:complexType>
</xs:element>
但是它跳过嵌套参数级别的验证。你知道怎么写得更具体吗?
跳过验证,因为您已经通过使用xsd:any
和processContents="skip"
告诉它这样做。其他控制点是
- 设置"
processContents
"为"lax
"表示元素声明 - 设置
processContents
为strict
表示该元素 - 使用XSD 1.1在
xsd:any
元素上创建断言。
如果您通过限制或参数化它们的名称来固定参数下允许的元素,则可以获得更多的限制。