2010-12-22 61 views
0

我有這個XML文件(其中一些是巨大的 - 數千個元素),我試圖使用XSD模式驗證此XML文件的某些元素。例如。日期等。現在,問題是XSD不會讓我驗證文檔的某些部分。它想要一切的定義 - 這將是非常痛苦的。我想知道的是,有沒有辦法讓XSD只使用文檔的某些元素?我已經嘗試過任何和anyAttribute無濟於事。如果不是,你會如何做到這一點?是否有一個庫/腳本生成與XML文檔相對應的模式,然後根據我的需要進行修改?驗證XML文檔的一個子集或僅某些元素?

感謝,

+0

你是指XSD想要定義所有東西的含義?你怎麼知道的?你在說什麼「XSD」? 「XSD」對「想要定義」意味着什麼? – 2010-12-22 00:44:04

+0

您可能想要顯示您用於驗證的代碼。如何完成這個任務可能取決於你使用的工具 - 通常它會。 – 2010-12-22 00:51:59

回答

1

你也有<xs:element name="aName"/>它匹配的烏爾型,所以任何類型。

一個典型的部分驗證是:

<xs:schema> 
<xs:element name="theRootElement"> 
    <xs:complexType> 
    <xs:sequence> 
    <!- some wildcard wich match the beginning of the document until the desired element --> 
    <xs:any processContent="skip" namespace="somethingOrAll"/> 

    <xs:element name="theDesiredElementToMatch"> 
    <!-- the matching test --> 
    </xs:element> 

    <!-- the rest of the doc --> 
    <xs:any processContent="skip" maxOccurs="unbounded"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 
</xs:schema> 

但它並不適用於所有的模式工作,這是非常乏味的。

1

複製你關心到文檔片段的DOM和運行驗證對那些碎片。當然,假設你正在用API編寫一些語言來完成這一切。