【问题标题】:xml - validate combination of attributes for given elementxml - 验证给定元素的属性组合
【发布时间】:2010-12-17 17:19:05
【问题描述】:

我有类似于下面的xml。

<Map>
<MapItem name="firstName" value="john" />
<MapItem name="middleName" value="q" />
<MapItem name="lastName" value="public" />
<MapItem name="phone" value="123-456-7890" />
<MapItem name="ssn" value="123-45-6789" />
<MapItem name="email" value="john@email.com" />
</Map>

我想提出一个单一的 xsd,它可以验证每个 MapItem 的属性值。

示例:

  • middleName = 单个字符
  • 电话 = 一些正则表达式模式
  • ssn = 其他一些正则表达式模式

这可能吗(只有一个 xsd)?

注意:目前我正在使用 xslt 将此 xml 转换为更基于元素的结构,我可以轻松地对其进行验证;但我需要在没有任何 xslt 转换的情况下执行此操作。

【问题讨论】:

    标签: xml validation xsd


    【解决方案1】:

    很遗憾,XSD 架构不支持条件验证。您将无法使用 XSD 架构执行您正在寻找的验证。

    您已经在使用一种解决方案,即 XSLT 转换。您还可以使用 XSLT 一步执行验证,其中 XSLT 转换的输出将是验证错误的列表。

    我还发现了一个link for you on the oXygen 网站,其中讨论了使用 Schemtron 和/或 Relax NG 模式的方法。

    希望对你有帮助!!!

    【讨论】:

    • 感谢您的链接。我已经研究过这些选项,但排除了它们。不幸的是,它只能用 xsd 来完成,因为“他们”不想重写任何代码来适应 Schematron 或 RelaxNG。按照这个速度,“他们”可能别无选择。
    • 如果您可以控制此 XML 的格式,也许您可​​以说服“他们”更改此 XML 的格式以使用元素而不是属性。
    猜你喜欢
    • 2011-03-29
    • 1970-01-01
    • 2020-05-14
    • 2017-08-17
    • 2020-12-21
    • 2021-04-18
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多