我有一个 XML 模式,它定义了一个元素,该元素可能是 base64 文本或 xop:Include 元素。目前,这被定义为 base64Binary 类型:
<xs:element name="PackageBinary" type="xs:base64Binary" minOccurs="1" maxOccurs="1"/>
当我插入 xop:Include 元素时,它看起来像这样:
<PackageBinary>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="http://google.com/data.bin" />
</PackageBinary>
但这会产生 XML 验证错误(我使用的是 .NET 验证器):
元素“mds:xml-schema:soap11:PackageBinary”不能包含子元素“ http://www.w3.org/2004/08/xop/include:Include ”,因为父元素的内容模型仅为文本。
这是有道理的,因为它不是 base64 内容,但我认为这是常见的做法......?有没有办法在架构中支持这一点?(我们有支持这种语法的现有产品,但我们现在正在添加验证。)