我在这里做了几个假设,因为你没有提供所有文件来诊断问题 . 我将包含您可以使用和测试的完整XSD文件,并尝试适应您的问题 .
我'll assume that you have a main schema like this one, which defines the elements that are in the default namespace of your instance (I' ll称之为 DataContract.xsd ):
xmlns="http://schemas.datacontract.org/2004/07/MyDomain"
targetNamespace="http://schemas.datacontract.org/2004/07/MyDomain">
根据您发布的数据,我还假设您的 anyType 元素基于一个抽象类型, MyObject 和 MyOtherObject 都来源于该抽象类型 . 我在下面的示例中将其命名为 AbstractObject ( MyLibrary.xsd ):
xmlns="http://schemas.datacontract.org/2004/07/MyLibrary"
targetNamespace="http://schemas.datacontract.org/2004/07/MyLibrary">
要允许通过 anyType 在您的实例中使用这些类型,您可以将其声明为具有 AbstractObject 类型(或在您的实际 MyLibrary 架构中调用的任何超类型):
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:q1="http://schemas.datacontract.org/2004/07/MyLibrary">
由于 MyObject 和 MyOtherObject 都来自 AbstractObject ,因此可以将它们用作 的类型 . 以下实例将在此方案中验证:
xmlns="http://schemas.datacontract.org/2004/07/MyDomain"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lib="http://schemas.datacontract.org/2004/07/MyLibrary"
i:schemaLocation="http://schemas.datacontract.org/2004/07/MyDomain DataContract.xsd
http://schemas.microsoft.com/2003/10/Serialization/Arrays SerializationArrays.xsd">
my-identifier
my-property-value
my-identifier
my-other-property-value