【发布时间】:2009-06-03 08:34:48
【问题描述】:
我收到一条带有未知变量名称元素的 XML 消息……也就是说,它们不是预定义的……
我只知道这些元素中可能有 0 个或多个,以及其他一些是强制性的......
例如
<root>
<service>my service</service>
<resource>my resource</resource>
<action>update</action>
<parameters>
<field1>value1</field1>
<field2>value2</field2>
<field3>value3</field3>
</parameters>
</root>
也就是说,我不知道会作为“参数”传递什么,我只知道会有0个或多个元素有一个值,不允许更深的标签嵌套....
我在考虑类似的事情
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="service" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="resource" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="action" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="parameters">
<xs:complexType>
<xs:element name="*" maxOccurs="unbounded">
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
当然,最难的部分是
<xs:element name="*" maxOccurs="unbounded">
这样的事情有可能吗?
如何定义验证此类消息的 XSD 文件?
--
我查看了 w3c 参考资料
http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html#NCName
它说:
NCName的·词法空间·是所有字符串的集合·匹配·[Namespaces in XML]的NCName产生。
那是什么意思呢?
此外...您能推荐我一些简单的方法来测试是否符合 XSD 定义吗?
【问题讨论】: