【问题标题】:XSD validating value of child reference elementXSD 验证子引用元素的值
【发布时间】:2011-09-09 12:44:46
【问题描述】:

我需要创建一个 XSD 来验证来自具有特定枚举的不同命名空间中特定复杂类型中的值。

在这种特定情况下,XML 将如下所示:

            <Format>
                <name>
                    <gco:CharacterString>IMG</gco:CharacterString>
                </name>
                <version>
                    <gco:CharacterString>Version 1.0</gco:CharacterString>
                </version>
            </Format>

要求所有值都验证为从单独的命名空间引用的 gco:CharacterString(这实际上是另一个命名空间中的简单 xs:string 类型,但我需要引用它)。

我需要 nameversion 来验证其 gco:CharacterString 子节点内的特定值枚举。在这种情况下,我想验证以下枚举是否存在并且对 gco:Characterstring 有效:

名称: IMG 地球仪 尼特

版本: 1.0版 2.0版 3.0版

将枚举添加到引用的 gco:Characterstring 不是一种选择,因为我需要这些特定于 versionname。这可以在 XSD 中设置吗?

【问题讨论】:

    标签: xml validation xsd


    【解决方案1】:

    不在 XML Schema 1.0 中。

    使用 XML Schema 1.1 - 类似于:

    <assert test="(name/gco:CharacterString eq 'IMG)
                  and (version/gco:CharacterString eq 'Version 1.0')"/>
    

    【讨论】:

      【解决方案2】:

      这在 XSD 1.0 中是不可能的。 XSD 中有一个内置假设,即验证命名空间中元素的规则是上下文无关的:也就是说,如果一个命名空间导入另一个命名空间,则第二个命名空间中元素的规则将不依赖于元素出现的位置。我建议您不要“正确”使用命名空间。

      【讨论】:

      • 客户提供了 XML 规范,我无法更改。我正在寻找一种在 XSD 中仍然能够验证 XML 的有效条目的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      相关资源
      最近更新 更多