2012-03-29 67 views
0

我试图为以下xml制作模式。XML Schema强制执行子元素而不强制执行标记名称

<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>其强制执行的子元素,但意味着我必须知道所有使用的标签名称(这我不)

感谢

回答

1

这是不可能的XSD 1.0。

在XSD 1.1中,可以使用声明来完成。

0

我觉得这是不可能的XML模式尝试。 我想你一定的结构从

<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> 

心连心