【问题标题】:XSD key with multiple fields具有多个字段的 XSD 键
【发布时间】:2011-08-12 13:47:21
【问题描述】:

我有这样的结构:

<parent>
    <name>p1</name>
    <child>
        <name>c3</name>
        <name>c1</name>
    </child>
</parent>
<parent>
    <name>p2</name>
    <child>
        <name>c1</name>
        <name>c2</name>
    </child>
</parent>

我想要的是另一个部分,其值应该在第一部分进行验证。这样

<parent name="p1"> 
    <child name="c3" /> 
</parent>

<parent name="p2">
    <child name="c2" />
</parent>

应该是有效的,但都不是

 <parent name="p1"> 
    <child name="c2" /> 
 </parent>

也没有

<parent name="p2">
    <child name="c4" />
</parent>

我在考虑使用多个字段的键

<xs:key name="k">
    <xs:selector xpath="tns:parent" />
    <xs:field xpath="tns:name" />
    <xs:field xpath="tns:child/tns:name" />
</xs:key>

但似乎这种方法永远行不通,因为关键字段应该是唯一的。

是否可以使用 XML Schema 1.0 做到这一点?

【问题讨论】:

标签: xml xsd xsd-1.0


【解决方案1】:

正确,parent 定义中的多个 child/name 元素是问题所在。太糟糕的 XML Schema doesn't allow XPath parent steps,因为您可以选择子名称:

<xs:key name="pcdef">
  <xs:selector xpath=".//tns:parent/tns:child/tns:name"/>
  <xs:field xpath="../../tns:name" />
  <xs:field xpath="." />
</xs:key>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    相关资源
    最近更新 更多