【问题标题】:XML Schema enforce child elements without enforcing tag nameXML Schema 强制子元素而不强制标签名称
【发布时间】:2012-03-29 00:05:19
【问题描述】:

我试图为以下 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 标签可以是任何名称。

我尝试过&lt;xs:any processContents="lax"&gt;&lt;/xs:any&gt;,它允许使用任何标签名称,但不允许我指定子代。

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

谢谢

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    这在 XSD 1.0 中是不可能的。

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

    【讨论】:

      【解决方案2】:

      我认为这在 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        • 2012-07-03
        相关资源
        最近更新 更多