2014-01-16 72 views
1

我需要驗證多個XML文件針對給定XSD文件。問題是XSD是由兩個文件組成的。它們是嵌套的,但我知道哪一個是第一個(其他人的「父母」)。在XML文件中,我使用命名空間來定義哪個子節點定義在哪個XSD(<CBIBdySDDReq xmlns="urn:CBI:xsd:CBIBdySDDReq.00.00.06" xmlns:msg="urn:CBI:xsd:CBISDDReqLogMsg.00.00.06">)。 我使用XMLTools插件記事本++對於其他測試,但它無法找到和驗證對這些XSD文件,因爲我只能給一個XSD來驗證作爲參數。如何根據多個XSD文件驗證XML?

是否有一個工具,它能夠測試我生成的XML 文件對多個XSD文件?

回答

5

首先,你應該考慮自己是幸運的,你沒有得到大量downvoted ......如果僅僅是因爲那些工具做的事情(建議)的範圍之外here ...

儘管如此,如果這是關於如何使用你已經使用的工具來實現你所需要的...而且我已經看到很多關於SO的報告......然後一種方法可以在任何時候有人有限制存在能夠提供一個單一的XSD文件...就是創建一個這樣的XSD文件,它下面將導入您需要引用的所有其他XSD文件。

這是一個存根XSD,將工作你的情況的一個例子:

<?xml version="1.0" encoding="utf-8" ?> 
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) --> 
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:import namespace="(a)" schemaLocation="(b)"/> 
</xsd:schema> 

其中:

(a)是你在XSD的targetNamespace屬性看值:架構你希望引用;如果沒有targetNamespace,則刪除名稱空間屬性(並將包含一些虛擬值的目標名稱空間添加到存根XSD)

(b)包含您要引用的XSD的文件的位置。從這裏開始使用完整路徑;當您瞭解了更多關於XSD或工具的信息時,您可能會得出結論,如果您的工具支持,提供相對URI(即位於「存根」XSD的位置(它確實是一個「聚合器「)和另一個引用的XSD。相對URI在移動你的東西方面更友善(作爲一個整體,比如壓縮所有文件併發送給其他人)。一個例子...如果這些文件在同一個文件夾中,你只需要在這裏放置文件的名稱。

爲每個XSD添加一個xsd:導入行,這些行爲通過所有其他XSD不可訪問,或者您的工具似乎抱怨不可達。

+0

Thnks for the answer。我是新來的,所以我不知道它不屬於這裏。我認爲,如果該工具通過開發用於XML文件的導出代碼來幫助我,那麼可以在此處發佈它。到目前爲止,我所見過的其他XML-XSD相關問題都是關於實施自己的驗證系統。感謝您的快速和明確的答案(: – Springrbua

+1

@Springrbua,無後顧之憂;至少在大多數情況下,推薦工具必定會產生爭論......最好的工具是人們知道並做到需要的工具......並且鑑於SO的格式和重點... –

+0

我已經看到,SO上的問題不應該是基於意見的,我會在下次嘗試考慮它。 – Springrbua