我想创建一个 XSD,它定义了一个属性,该属性可以放置在来自其他模式的元素或不在任何模式中的元素上。例如,模式看起来像这样:
<xs:schema id="MySchema"
targetNamespace="http://tempuri.org/MySchema"
elementFormDefault="qualified"
xmlns="http://tempuri.org/MySchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:attribute name="myAttribute" />
</xs:schema>
该文档可能如下所示:
<someElement xmlns="http://tempuri.org/OtherSchema" xmlns:m="http://tempuri.org/MySchema">
<someOtherElement someAttribute="value" m:myAttribute="value2" />
</someElement>
此示例的“OtherSchema”如下所示:
<xs:schema id="OtherSchema"
targetNamespace="http://tempuri.org/OtherSchema"
elementFormDefault="qualified"
xmlns="http://tempuri.org/OtherSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="someElement">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="someOtherElement">
<xs:complexType>
<xs:attribute name="someAttribute" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
可以从http://dl.getdropbox.com/u/407740/SchemaTest.zip下载完整的示例,包括执行验证的 C# 控制台应用程序。我的目标是在无需修改“OtherSchema”的情况下进行验证。这可能吗?