2010-11-24 117 views
0

我有以下格式的XML。使用XSD進行XML驗證

<RootNode> 
    <Parent> 
     <Child1>Some text about child 1</Child1> 
     <Child2>Some text about child 2</Child2> 
     .... 
     .... 
     <Child5>Some text about child 5</Child5> 
     .... 
     .... 
     <Childn>Some text about child n</Childn> 
    </Parent> 
</RootNode> 

現在我想驗證這個xml對xsd。

但問題是孩子的數量和節點名稱不固定。

請檢查下面的我的文件樣本

示例1:兩個孩子節點名稱Child1和CHILD2

<RootNode> 
    <Parent> 
     <Child1>Some text about child 1</Child1> 
     <Child2>Some text about child 2</Child2> 
    </Parent> 
</RootNode> 

示例2:三個孩子節點名稱Child4 Child5和Child8

<RootNode> 
    <Parent> 
     <Child4>Some text about child 4</Child4> 
     <Child5>Some text about child 5</Child4> 
     <Child8>Some text about child 8</Child8> 
    </Parent> 
</RootNode> 

我想要一個驗證子節點(顯示爲「有關子n的一些文本」)內的文本,並遵循以下規則

規則:XML是無效的,如果任何子節點 - (父母的兒童)的核能研究所文本長度多於256

這意味着考慮XML無效的,如果「父」節點的任何孩子有內部文本不再然後256個字符

這可能使用XSD架構驗證?你能幫我創建.XSD文件來驗證這一點嗎?

在此先感謝

回答

0

你可以用」如前所述,用XSD解決這個問題只是因爲你不知道所有的元素名稱會提前。如果你沒有完全綁定到XSD驗證,你可能想看看Schematron,它可以完成這種驗證。

1

它無法自動驗證這一點,因爲子節點的最大數量是未知的。您可以通過編寫一些手動驗證來獲得。

如果你能夠改變這個XML的格式,你應該,因爲它的設計不好(尤其是因爲它不能驗證......)。你應該拍更多的東西,如:

<RootNode> 
    <Parent> 
     <Child num="1">...</Child> 
     <Child num="2">...</Child> 
    </Parent> 
</RootNode> 

,或者,如果家長可以包含其他的事情以及兒童,然後有針對兒童的容器是有用的:

<RootNode> 
    <Parent> 
     <OtherStuff/> 
     <Children> 
      <Child num="1">...</Child> 
      <Child num="2">...</Child> 
     </Children> 
     <MoreStuff/> 
    </Parent> 
</RootNode> 
+0

非常感謝您的快速回復。 – HAA 2010-11-24 12:28:09