gpt4 book ai didi

xml - 如何定义允许未知(通配符)元素的 XSD 文件?

转载 作者:数据小太阳 更新时间:2023-10-29 01:40:56 24 4
gpt4 key购买 nike

我收到了一 strip 有未知变量名称元素的 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

它说:

The ·lexical space· of NCName is the set of all strings which ·match· the NCName production of [Namespaces in XML].

那是什么意思呢?
此外...您能否向我推荐一些简单的方法来测试是否符合 XSD 定义?

最佳答案

你要的是通配符粒子,详见 http://www.w3.org/TR/xmlschema-1/#Wildcards

为此,您可以使用 xs:any。请注意,xs:elementxs:any 不能直接放在 xs:complexType 中。您需要一个像 xs:sequencexs:choice 这样的容器。

处理通配符的有效模式如下:

<?xml version="1.0" encoding="UTF-8"?>
<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"/>
<xs:element name="resource" type="xs:string"/>
<xs:element name="action" type="xs:string"/>
<xs:element name="parameters">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:any processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>

关于xml - 如何定义允许未知(通配符)元素的 XSD 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/943659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com