XML Schema强制执行子元素而不强制执行标记名称

时间:2012-03-29 00:05:20

标签: xml xsd

我尝试为以下xml制作架构。

<root>
    <allow_any_name id="string">
        <required_tag_1>string</required_tag_1>
        <required_tag_2>string</required_tag_2>
        <required_tag_3>string</required_tag_3>
    </allow_any_name>

    <name1 id="string">
        <required_tag_1>string</required_tag_1>
        <required_tag_2>string</required_tag_2>
        <required_tag_3>string</required_tag_3>
    </name1>

    <name2 id="string">
        <required_tag_1>string</required_tag_1>
        <required_tag_2>string</required_tag_2>
        <required_tag_3>string</required_tag_3>
    </name2>

</root>

主要问题是我找不到指定子元素的方法,也指定了标记名称。在上面的xml中,allow_any_name标记可以是任何名称。

我尝试<xs:any processContents="lax"></xs:any>允许任何标记名称,但不允许我指定子项。

我也尝试使用强制子元素的<xs:any processContents="strict" namespace="##local"></xs:any>,但意味着我必须知道所有使用的标签名称(我不知道)

由于

2 个答案:

答案 0 :(得分:1)

XSD 1.0无法实现。

在XSD 1.1中,可以使用断言来完成。

答案 1 :(得分:0)

我认为这不适用于XML Schema。 我认为你必须从

改变你的结构
<allow_any_name id="string">
  <required_tag_1>string</required_tag_1>
  <required_tag_2>string</required_tag_2>
  <required_tag_3>string</required_tag_3>
</allow_any_name>

这样的事情:

<fixed_tag_name id="string" name="allow_any_name">
  <required_tag_1>string</required_tag_1>
  <required_tag_2>string</required_tag_2>
  <required_tag_3>string</required_tag_3>
</fixed_tag_name>

HTH

相关问题