XSD Schema 中如何声明任意名称的元素,且该元素未被声明过

来源:百度知道 编辑:UC知道 时间:2024/06/20 09:59:54
我要为这样的xml写schema:
<test>
<name1>……</name1>
<name2>……</name2>
<name3>……</name3>
……
</test>

但test下面究竟有多少个name*是未知的,每个name*的类型是xs:string
但xs:element的name中又不能用正则表达式,那有没有什么办法?而且我知道用xs:any是不行的,因为xs:any要求每个name*都已经被声明过,但我显然不可能声明每个name*

要求xsd能通过http://www.w3.org/2001/03/webdata/xsv的校验

另外,如果这是XSD Schema本身的局限性写不出来,那用RELAX NG又能不能表达出来?

重谢!
注意我所要写的xml元素名是“name”后面跟着一个数字。也就是说元素名不是固定的。用正则表达式写出来大概是:name[0-9]+。题目中我是用name*来表示的

如果能给出RELAX NG的表示法也可以拿全分

you might need to define the occurrence of the element:

<xs:element name="test">
<xs:complexType>
<xs:element name="name" type="xs:string" maxOccurs="unbound" minOccurs="0"/>
</xs:complexType>
</xs:element>

when bound to java object, this would generate a java.util.List<String>

-------------
well, if an element has a variable name, it might be inappropriate to declare as a schema element. it's a design problem then.

请问你解决了么 我也遇到同样的问题