xsd验证,提供有关枚举中包含的ID的信息

时间:2012-09-27 17:04:34

标签: xml xsd enumeration

我正在使用xsd来验证我的xml。其中一个元素AddressType应该只包含其中一个值(1,2,3)。

          <AddressType>1</AddressType>

我想提供有关此ID的信息。例如1对应Home,2对应Work等。

我想过使用这样的枚举 -

                <xs:enumeration value="1" id="Home"/>

但如果任何其他枚举具有相同的id,则会失败。有没有办法可以提供价值以及有关身份的信息。

2 个答案:

答案 0 :(得分:2)

这取决于您对验证XML的应用程序的期望,以及provide information about these ids的确切含义。要增强错误消息?在从XSD构建数据输入表单时使用它吗?

一种方法是利用XML Schema注释机制。

  • 验证程序通常允许您访问与XML节点关联的特定架构对象,在这种情况下,您可以从注释中提取其他信息。

  • 从XSD构建数据输入表单的其他工具可能能够显示文本来自注释的下拉列表以及枚举值的值。这些通常已经推荐了标记,以及如何将其插入XSD。

        <xs:enumeration value="1">
            <xs:annotation>
                <xs:documentation>Home</xs:documentation>
                <xs:appinfo>
                    <something:proprietary>Home</something:proprietary>
                </xs:appinfo>
            </xs:annotation>
        </xs:enumeration>
    

答案 1 :(得分:2)

我的第一个建议是不要在XML中使用id(XML是人类可读的;-))。如果必须,那么你可以使用xsd:annotation / xsd:documentation来提供每个id的含义。