xml架构并使用选项作为文档根

mik*_*key 15 xml xsd

我有一点新手xml架构问题.我相信答案是我需要做的是模式不可能,但我想确定.问题是我有一个web服务,它在成功时返回一种类型的根元素的响应(比如<Response>),并且在完全失败时,返回一个具有不同根元素的文档(比如<Exception>).所以,基本上,两个完全不同的文件:

<Response> ...... </ Response> OR
<Exception> .... </ Exception>

是否可以用一个模式文档描述这两个不同的文档?这就像我想要一个选择作为schema元素下的第一个元素 - 但这不是有效的语法.我尝试了几种解析为有效xsd的变体,但不验证文档.有什么建议?或者这根本不可能?非常感谢 - m

Phi*_*oth 34

实际上,XML模式允许您在单个模式中定义备用根元素,但不能使用该choice元素.相反,您需要做的就是将每个可能的根列为schema元素的直接子元素.

例如,给定以下XML模式:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="foo">
        ...
    </xs:element>
    <xs:element name="bar">
        ...
    </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

以下任何一个文件都将对其进行验证:

<foo>
    ...
</foo>
Run Code Online (Sandbox Code Playgroud)

要么:

<bar>
    ...
</bar>
Run Code Online (Sandbox Code Playgroud)