2011-04-25 79 views
1

我有結構是這樣的:具有多個字段的XSD關鍵

<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做到這一點?

+1

DUP:http://stackoverflow.com/questions/891324/xsd-key-keyref-hierarchical-key-structure – xan 2011-04-27 00:09:10

回答

1

正確,parent定義中的多個child/name元素是問題所在。太糟糕了XML模式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> 
相關問題