在XSD架构中定义XML元素的别名

时间:2012-09-17 13:43:28

标签: xml xsd alias

是否有XSD语言支持或技巧(例如通过预处理器)来定义XML元素的别名?我想为我的模式中的所有元素添加别名,以便为更加神秘但网络带宽有效的XML文档版本创建一个选项。

例如,我想将IRQ之类的名称定义为元素InterruptRequest等的别名。

<xs:element name="InterruptRequest" minOccurs="0">
    <xs:complexType>
        <xs:attribute name="level" type="xs:unsignedShort" use="required"/>
    </xs:complexType>
</xs:element>

以下两个声明彼此相同

<!-- Human readable but bandwidth inefficient -->
<InterruptRequest level="22" /> 

<!-- Cryptic, but comparatively bandwidth efficient -->
<IRQ level="22" />

1 个答案:

答案 0 :(得分:7)

您不能将两个元素名称定义为同义词,但您可以通过替换组将一个元素名称定义为另一个元素名称。它们仍然会以不同的方式显示在您的应用程序中,但验证过程将允许其中一个在内容模型允许的其他地方使用。

<element name="a">...

<element name="b" substitutionGroup="a">...