在XML标准中定义扩展的最佳实践是什么?

时间:2009-09-03 14:36:12

标签: xml xsd

我正在研究一种XML Schema,它将用于许多应用程序之间的数据传输,而不是我们控制的所有应用程序。核心数据对所有人来说都是一样的,但我们希望允许特定的应用程序存储额外的数据,以允许文件“往返”,这样他们就可以保存和重新加载,而不会丢失任何特定于该应用程序的内容。这是什么最好的做法?

我们到目前为止的想法是为每个主节点定义一个节点,这将允许我们针对模式进行验证(没有意外的节点或错误位置的节点),这允许任何东西存储在扩展下节点

我们可能还希望将这些扩展模式中的一个或多个定义为模式本身。

请问其他标准如何完成?我们应该采用什么?

1 个答案:

答案 0 :(得分:1)

如果原始模式不是为了可扩展性而写的,那么你就不走运了。

作为为可扩展性编写的模式的示例,请参阅WSDL的模式。请注意,几乎所有内容都扩展了wsdl:documented类型。请注意,许多元素也允许可扩展性:

<complexType name="serviceType">
    <complexContent>
        <extension base="wsdl:documented">
            <sequence>
                <element ref="wsdl:port" minOccurs="0" maxOccurs="unbounded"/>
                <any namespace="##other" minOccurs="0"/>
            </sequence>
            <attribute name="name" type="NCName" use="required"/>
        </extension>
    </complexContent>
</complexType>

any元素将允许包含任意XML。


BTW,我所知道的关于XML架构的一切,我是从Eric XML Schema的Eric van der Vlist那里学到的。

发布者: O'Reilly Media,Inc。
发布日期: 2002年6月25日
打印 ISBN-13:978-0-596-00252-7
页数: 400

见第13章,Creating Extensible Schemas