- 追加された行はこの色です。
- 削除された行はこの色です。
#freeze
RIGHT:(2005/06/01 溝口@アドス)
目次
#contents
#br
*概要 [#oe56fa46]
*概要 [#jac75d84]
Xerces2 Java Parserは[[Apache XML プロジェクト:http://xml.apache.org/]]で開発された、オープンソースのXMLパーサです。JavaプログラムのDOM APIを持つほか、XSDバリデーションの機能を持ちます。ここでは、簡単なXSDバリデーションのプログラムを用意し、コマンドラインでのXSDバリデーション実行方法を解説します。
Xerces2 Java Parserの実行にはJDK or JRE 1.2以上相当が必要です。
-Sun J2SE~
http://java.sun.com/j2se/
-Sun J2SE 1.4.2 download~
http://java.sun.com/j2se/1.4.2/ja/download.html
ここでは、Xerces2 Java Parser 2.6.2 / J2SE 1.4.2_08 / Windows2000 の環境を例に説明します。
#br
*Xerces2 Java Parserのダウンロードとインストール [#n495fb7d]
*Xerces2 Java Parserのダウンロードとインストール [#yf73e08d]
Xerces2 Java Parserプロジェクトのページは下記URLです。
http://xml.apache.org/xerces2-j/
#ref(m1.gif,center)
このページからダウンロードページのミラーサイトを辿ることができます。([[ショートカット:http://www.meisei-u.ac.jp/mirror/apache/dist/xml/xerces-j/]])
#ref(m2.gif,center)
ミラーサイトから、Xerces-J-bin.2.6.2.zip または Xerces-J-bin.2.6.2.tar.gz をダウンロードします。このアーカイブには xercesImpl.jar ファイルおよび xml-apis.jar ファイルが含まれています。この2つのファイルを適当なフォルダへコピーします。ここで、このフォルダを&color(red){{XERCES_HOME}};とします。
#br
*バリデーションプログラムの用意 [#f2e8a89b]
*バリデーションプログラムの用意 [#ae5acbf1]
Xerces2にはコマンドラインで利用できるXSDバリデーションツールが付属していません。そのため、下記のプログラムを利用します。このプログラムのjarファイル(&ref(xsdvalid.jar);)を&color(red){{XERCES_HOME}};へコピーします。
【ValidatingXMLDOMParser.java】
/* This source comes from http://www.experts-exchange.com/Web/Web_Languages/XML/Q_21058568.html */
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
import org.apache.xerces.parsers.DOMParser;
import org.apache.xerces.parsers.XMLParser;
import java.io.File;
import org.w3c.dom.Document;
public class ValidatingXMLDOMParser {
public void validateSchema(String SchemaUrl, String XmlDocumentUrl) {
try {
DOMParser domParser = new DOMParser();
domParser.setFeature("http://xml.org/sax/features/validation",true);
domParser.setFeature("http://apache.org/xml/features/validation/schema",true);
domParser.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true);
domParser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"
,SchemaUrl);
Validator handler=new Validator();
domParser.setErrorHandler(handler);
domParser.parse(XmlDocumentUrl);
if(!handler.validationError)
System.out.println("XML Document is valid");
}
catch(java.io.IOException e) {
System.out.println(e);
}
catch (SAXException e) {
System.out.println(e);
}
}
private class Validator extends DefaultHandler {
public boolean validationError = false;
public void error(SAXParseException e) throws SAXException {
validationError = true;
System.out.println(e);
}
public void fatalError(SAXParseException e) throws SAXException {
validationError = true;
System.out.println(e);
}
public void warning(SAXParseException e) throws SAXException {
validationError = true;
System.out.println(e);
}
}
public static void main(String[] argv) {
String SchemaUrl=argv[0];
String XmlDocumentUrl=argv[1];
ValidatingXMLDOMParser validator=new ValidatingXMLDOMParser();
validator.validateSchema(SchemaUrl, XmlDocumentUrl);
}
}
このプログラムでは、&color(red){外部};の(XMLファイルにおいてxsi:noNamespaceSchemaLocation属性やxsi:schemaLocation属性で指定されていない)、かつ&color(red){対象名前空間の指定されていない};XSDファイルを利用します。
#br
*XSDファイルとXMLファイルの用意 [#w71d4e15]
*XSDファイルとXMLファイルの用意 [#nd0fe8b1]
XSDファイルを適当なフォルダへコピーします。ここで、XSDファイルのパスを&color(red){{XSD_PATH}};とします。(サンプル:&ref(sample.xsd);)
XMLファイルを適当なフォルダへコピーします。ここで、XMLファイルのパスを&color(red){{XML_PATH}};とします。(不正なXMLのサンプル:&ref(sample.xml);)
#br
*XSDバリデーションの実行 [#kcf04164]
*XSDバリデーションの実行 [#v9a3798c]
以下のフォーマットでコマンドを実行します。下記2行は一行のコマンドとして記述します。
> java -classpath &color(red){{XERCES_HOME}};\xercesImpl.jar;&color(red){{XERCES_HOME}};\xml-apis.jar;
> &color(red){{XERCES_HOME}};\xsdvalid.jar ValidatingXMLDOMParser &color(red){{XSD_PATH}}; &color(red){{XML_PATH}};
具体的なコマンドの例
java -classpath .\xercesImpl.jar;.\xml-apis.jar;.\xsdvalid.jar ValidatingXMLDOMParser sample.xsd sample.xml
XMLファイルがXSDファイルに対して正常であれば、下記の文字列を出力します。
XML Document is valid
XMLファイルがXSDファイルに対して不正であれば、下記のようなエラーメッセージを出力します。
【エラーメッセージ例】
org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '1.1' is not a valid value for 'boolean'.
org.xml.sax.SAXParseException: cvc-type.3.1.3: The value '1.1' of element 'cell'
is not valid.
#br
----
-mV0Dy3 <a href="http://fvclrbwjbqaq.com/">fvclrbwjbqaq</a>, [url=http://cynwvnnydips.com/]cynwvnnydips[/url], [link=http://ijluplzmigfa.com/]ijluplzmigfa[/link], http://dnhcfyszebrx.com/ -- [[dghbts]] &new{2009-06-01 01:33:29 (月)};
-http://www.youtube.com/EgilLeofwine#1 discount tramadol, 924421018238, -- [[soma bay]] &new{2009-06-04 07:56:30 (木)};
-http://www.youtube.com/EgilLeofwine#1 tramadol drug, 487, -- [[accupril]] &new{2009-06-04 07:56:30 (木)};
-http://www.youtube.com/TaunoWebster#1 accupril, ewqmggzqyphw, -- [[abilify]] &new{2009-06-04 07:56:31 (木)};
-http://www.youtube.com/PerseusRodolfo#1 soft cialis, qgpzvw, -- [[viagra online]] &new{2009-06-04 07:56:32 (木)};
-http://www.youtube.com/ColtonThemba#1 abana, ajlzumdc, -- [[celexa]] &new{2009-06-04 07:56:33 (木)};
-http://www.youtube.com/ShunVeasna#1 acomplia, :PPP, -- [[soft viagra]] &new{2009-06-04 07:56:34 (木)};
-http://www.youtube.com/LauritsYudel#1 effects zoloft, wzbxblaf, -- [[buy xenical]] &new{2009-06-04 07:56:35 (木)};
-http://www.youtube.com/YngvarFabien#1 buy viagra, xfzleqult, -- [[zoloft]] &new{2009-06-04 07:56:36 (木)};
-http://www.youtube.com/JeraldVojtgch#1 buy xenical, =-(, -- [[escitalopram]] &new{2009-06-04 07:56:36 (木)};
-http://www.youtube.com/YngvarFabien#1 viagra online, 1883464340, -- [[soft cialis]] &new{2009-06-04 07:56:37 (木)};
-http://www.youtube.com/ShunVeasna#1 acomplia online, 906665807719, -- [[cialis]] &new{2009-06-04 07:56:38 (木)};
-http://www.youtube.com/RedChandlers#1 propecia online, npwjm, -- [[acutane]] &new{2009-06-04 07:56:39 (木)};
-http://www.youtube.com/AlbinCorey#1 citalopram side effects, 4221994, -- [[generic tadalafil]] &new{2009-06-04 07:56:40 (木)};
-http://www.youtube.com/MikheilEstebe#1 levitra, 57882226, -- [[acutane]] &new{2009-06-04 07:56:41 (木)};
-http://www.youtube.com/TaunoWebster#1 accupril, =-PPP, -- [[abilify]] &new{2009-06-04 07:56:42 (木)};
-http://www.youtube.com/PippinYvon#1 celexa, tyqjevll, -- [[tramadol]] &new{2009-06-04 07:56:42 (木)};
-http://www.youtube.com/OrsinoImre#1 revatio, :-DDD, -- [[buy cialis]] &new{2009-06-04 07:56:43 (木)};
-http://www.youtube.com/PippinYvon#1 celexa, mqejngmm, -- [[celexa]] &new{2009-06-04 07:56:44 (木)};
-http://www.youtube.com/PerseusRodolfo#1 soft cialis, :((, -- [[revatio]] &new{2009-06-04 07:56:45 (木)};
-http://www.youtube.com/BimaChristian#1 tramadol ultram, pyuojj, -- [[abilify]] &new{2009-06-04 07:56:46 (木)};
#comment