微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

要求一个元素具有另一个元素作为后代

如何解决要求一个元素具有另一个元素作为后代

| 在xsd模式中,是否有一种方法可以要求某个元素在某处具有另一个元素作为后代? 例如,父元素需要后代desc。这是有效的:
<parent>
  <a>
   <b>
     <desc></desc>
   </b>
  </a>
</parent>
像这样:
<parent>
  <c>
    <desc></desc>
  </c>
</parent>
但这不是:
<a>
  <parent>
    <b/>
  </parent>
</a>
父级的潜在子元素很多且很复杂,因此很难枚举每个可能的有效配置。 像键/选择器架构元素之类的东西似乎可以工作,在这里我可以提供xpath表达式来定义desc元素的有效位置,但是我发现的所有示例都旨在匹配属性值。     

解决方法

        不,(几乎)所有XML Schema验证都是浅的,在规范中称为\“ local \”。这是强调类型验证为“本地”验证的摘录。   通过类型验证的元素   元素信息项有效   关于类型定义   每个元素局部有效(类型)   (第3.3.4节),[被标记为]·有效·。 唯一的例外是身份约束,例如唯一性和键引用,它们在XML文档中具有广泛的范围,但用途狭窄。     ,        我不知道XSD是否支持您要执行的操作,但是有一种解决方法。 您可以分两步进行复杂的验证: 首先,只需使用XSD模式进行基本验证 接下来,使用XSLT执行更复杂的验证,并输出该验证的结果 这可能无法很好地插入您正在使用的任何框架,但对于(部分)自定义代码可能会很好地工作。与通过代码进行额外的验证相比,它还具有可以发布两个文档的优点。 通过Google的快速搜索,为此目的而努力的一项工作就是Schematron。实际上,它完全放弃了XSD,仅使用XSLT。它似乎是已发布的标准: http://www.schematron.com/     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?