是否可以在 XML 模式中定义必须有一些特定的 XML 属性,同时我想允许将来扩展这个列表?
在这里,如果我们有以下 XML 声明的假设部分:
<xs:element name="MyTypeInstance" type="MyType" />
<xs:complexType name="MyType">
<xs:attribute name="FirstAttr" type="xs:int" use="required"/>
<xs:attribute name="SecondAttr" type="xs:string" use="required"/>
</xs:complexType>
那么根据这个模式,下面的 XML 文档片段是有效的:
<MyType firstAttr="123" secondAttr="abc" />
我想要的是能够成功验证以下 XML 片段:
<MyType firstAttr="123" secondAttr="abc" ThirdAttr="some new value" />
两个主要问题是:
- 我不想每次需要引入一些新属性时都更改 XML 架构,因为我们不想强制所有客户端更新到我们软件的最新版本,其中一些不更新他们的应用程序需很长时间;
- 我不能只
anyAttribute
在 XML 模式中使用,因为我想在使用 XML 文档之前对其进行验证。如果我只指定anyAttribute
元素,那么我就不会知道缺少一些必需的属性。据我了解,XML 不允许在模式中使用attribute
和anyAttribute
元素(至少我无法使用 .netXmlDocument
类使这样的模式工作)。
如果可以使用attribute
element 显式指定一些属性,那将是理想的,所以我会确切地知道这些属性存在于 XML 文档中,但同时我会允许使用anyAttribute
element 扩展 XML 文档。
怎么做到呢?