1

我正在使用 xsd 来验证我的 xml。元素 AddressType 之一应仅包含值之一 (1,2,3)。

          <AddressType>1</AddressType>

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

我想过像这样使用枚举-

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

但如果任何其他枚举具有相同的 id,这将失败。有没有一种方法可以提供价值以及有关 id 的信息。

4

2 回答 2

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>
    
于 2012-09-27T17:47:00.717 回答
2

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

于 2012-09-27T17:47:37.223 回答