【问题标题】:check tag in xml schema in dependency of another one检查 xml 模式中的标签是否依赖于另一个标签
【发布时间】:2013-07-08 02:27:47
【问题描述】:

我有以下示例 xml:

<ip_addresses>
   <ip_address>
      <type>local</type>
      <ip>192.168.1.1</ip>
   </ip_address>

   <ip_address>
      <type>public</type>
      <ip>82.125.1.1</ip>
   </ip_address>
</ip_addresses>

如何根据&lt;type&gt; 标签中的值在我的 xml 架构中使用不同的正则表达式进行 ip 检查?

我也尝试了&lt;ip type="local"&gt;192.168.1.1&lt;/ip&gt; 之类的方法,但我无法让 xml 架构正常工作。

感谢您的帮助 貂

【问题讨论】:

标签: xml validation xsd schema xml-validation


【解决方案1】:

在 XSD 1.0 中,您不能使一个元素的类型以另一个元素的值为条件。

在 XSD 1.1 中,您可以使用断言来做到这一点。例如(在 ip_address 级别)你可以写

<xs:assert test="(@type='local' and @ip='192.168.1.1') or @type='public'"/>

【讨论】:

  • 但是@ip='XYZ' 不能是我上面评论中的正则表达式,还是?据我了解您的回答,我只能针对每个 xs:assert 或?
  • 不,您可以使用任何 XPath 表达式,例如您可以将 matches() 与正则表达式一起使用。我不确定您为什么建议使用正则表达式,尽管问题的陈述非常模糊,但 OP 要求中似乎没有任何需要它的东西。
猜你喜欢
  • 2015-05-01
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多