我有一个新的xml模式问题。我相信答案是,我需要做的是不可能与模式,但我想肯定。问题是,我有一个Web服务,它在成功时返回一个带有一种根元素类型的响应(比如<;response>),在完全失败时,返回一个带有不同根元素的文档(比如<;Exception>)。因此,基本上,两个完全不同的文件:
<;响应>……</响应>或
<;例外>…</例外情况>
是否可以用一个模式文档描述这两个不同的文档?这就像我想要一个选项作为schema元素下的第一个元素——但这不是有效的语法。我尝试了两种变体,它们解析为有效的xsd,但不验证文档。有什么建议吗?还是这根本不可能?事先非常感谢
实际上,XMLSchema允许您在单个模式中定义替代的根元素,尽管不是通过使用choice元素。相反,您需要做的就是将每个可能的根列为模式元素的直接子元素
例如,给定以下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>;
以下任一文件将根据其进行验证:
<;foo>;
...
</foo>;
或:
<;酒吧>;
...
</酒吧>;