gpt4 book ai didi

java - XSD:将元素的属性值限制为父属性的子字符串

转载 作者:行者123 更新时间:2023-12-02 05:57:53 26 4
gpt4 key购买 nike

考虑这段 XML

<Parent id="MyParent1">
<Child id="MyParent1.MyChild1"/>
</Parent>

<Parent id="MyParent2">
<Child id="MyParent2.MyChild1"/>
<Child id="MySillyIncorrectPrefix.MyChild2"/>
</Parent>

如何验证(可能使用 XSD)其 id 包含父元素 id 作为前缀的子元素,以便:

<Child id="MyParent2.MyChild1"/> <!-- is valid -->
<Child id="MySillyIncorrectPrefix.MyChild2"/> <!-- is not valid -->

我不受 XSD 1.0 版本的约束,因此我可以尝试使用 XSD 1.1(以及断言等功能),但我想知道:

  • 如何使用 xs:assertion 或更合适的 XSD 1.1 来表达上述约束特征。
  • 是否可以利用 Java 构建一个 validator 那个xsd? “Xerces-J”是一个可行的解决方案吗?

根据我对 XSD 1.1 的有限了解,我提出了这个尝试:

<xs:element name="Child"> 
<xs:complexType>
<xs:attribute name="type" type="xs:String" />
<xs:assert test="starts-with(@type,../@type)"/>
</xs:complexType>
</xs:element>

这是正确的吗?有没有一个工具可以让我测试它?更笼统地说:是否有工具可以帮助构建和测试此类 XSD 1.1 特色模式? (据我所知 Eclipse 仅支持 XSD 1.0)

最佳答案

您所描述的内容在 XSD 1.0 中不可行。

在 XSD 1.1 中,您可以对父级的类型使用断言,要求每个子级的 id 属性以父级 id 属性的值开头。

关于java - XSD:将元素的属性值限制为父属性的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com