多くのXSDファイルに対してXMLファイルを検証しようとしています。現時点では、xsdスキーマを手動で入力することしかできません。 (私は自分のXMLファイルをチェックし、XSDの定義を調べるという意味です)。どのようにしてXMLファイルの中のXSDスキーマファイルを検出できますか?私がこれまで試したどのような XSDスキーマファイルをXMLファイルで自動的に検出するにはどうすればよいですか?
: //以下の方法は、複数のXSDスキーマファイルに対してXMLファイルを確認してください。public static void XSDValidation() throws SAXException, IOException, ParserConfigurationException {
try {
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema sch = schemaFactory.newSchema(new Source[] { new StreamSource(new FileInputStream("role-1.2.xsd")),
new StreamSource(new FileInputStream("role-1.1.xsd")) });
Validator validator = sch.newValidator();
validator.validate(new StreamSource("role.xml"));
System.out.println("INFO: Validation is done successfully.");
} catch (Exception e) {
System.out.println("ERROR: Validation is failed.");
}
}
は、私はすべての助けのためのDOMパーサおよびJava 8
アドバンスのおかげを使用しています。
EDIT: kjhughes @私は単に
を求めなかったXSDファイルに対してXMLファイルを検証するための最良の方法は何ですか?
私の質問: XSDスキーマファイルをXMLファイルで検出する方法を教えてください。たとえば、b.xsdとc.xsdを含むa.xmlを検証する場合、これらのファイルを自動的に、真の順序で検出したいと考えています。つまり、XMLが最初にc.xsdの名前空間を使用する場合は、それを検出する必要があります。私の例では、XSDスキーマファイルとその順序は、XMLの内部をチェックすることによって手動で記述されていました。
カスタムEntityresolverを使用して参照されるスキーマを見つける方法はありますか? – ulab
@ulab私はhttps://docs.oracle.com/javase/7/docs/api/org/xml/sax/EntityResolver.htmlを読みましたが、実際に私が適用できるか理解できませんでした。もう少し説明していただけますか? – limonik
これらのXSD宣言を使用したサンプルXMLが役立ちます。サンプルを投稿できますか? –