XML Schema将子嵌套到任何元素中

时间:2016-06-27 15:33:46

标签: xml xsd castle

我正在尝试为此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>

但是它会跳过嵌套参数级别的验证。你知道怎么写它更具体吗?

1 个答案:

答案 0 :(得分:0)

已跳过验证,因为您已使用xsd:any processContents="skip"告知其执行此操作。你的其他控制点将是

  • processContents设置为lax以指示元素声明 如果定义但不需要定义,则应该使用它。
  • processContents设置为strict以指明该元素 声明应该被使用并且必须被定义。
  • 使用XSD 1.1并在xsd:any元素上创建断言。

如果通过限制或参数化名称来修复参数允许的元素,则可以获得更多限制。