在XSD模式中为XML元素定义别名

9

是否有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个回答

10

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

<element name="a">...

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

substitutionGroup非常好。然而,在我的情况下,这些元素出现在choice元素中。因此,我想我可以在choice列表中重复这两个名称。 - Olumide
它适用于从另一个模式导入的元素吗? - fbiville
1
请不要在评论中以补充问题的形式提问,特别是当原始问题已经存在10年时。请开启一个新的讨论线程。 - Michael Kay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接