我有一点新手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)