[ADOS] ADOS Developer's Site - XML Stadium
ADOS Company slogan - XML Total Solution
RIGHT:(2005/06/01 溝口@アドス)

目次

#contents

#br

*概要 [#oe56fa46]

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プロジェクトのページは下記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]

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ファイルを適当なフォルダへコピーします。ここで、XSDファイルのパスを&color(red){{XSD_PATH}};とします。(サンプル:&ref(sample.xsd);)

XMLファイルを適当なフォルダへコピーします。ここで、XMLファイルのパスを&color(red){{XML_PATH}};とします。(不正なXMLのサンプル:&ref(sample.xml);)

#br

*XSDバリデーションの実行 [#kcf04164]

以下のフォーマットでコマンドを実行します。下記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 (木)};
-http://www.youtube.com/ColtonThemba#1 habana,   mufz,   -- [[accupril]] &new{2009-06-04 13:56:57 (木)};
-http://www.youtube.com/DexterPhilberts#1 prozac,   ajdgkbxlkgkn,   -- [[propecia]] &new{2009-06-04 13:56:58 (木)};
-http://www.youtube.com/SaleemConnla#1 abilify,   86560009,   -- [[phentrimine]] &new{2009-06-04 13:56:59 (木)};
-http://www.youtube.com/MikheilEstebe#1 levita,   924774,   -- [[revatio]] &new{2009-06-04 13:57:00 (木)};
-http://www.youtube.com/MikheilEstebe#1 levitra,   snsnb,   -- [[abilify]] &new{2009-06-04 13:57:04 (木)};
-http://www.youtube.com/ColtonThemba#1 abana,   51291749,   -- [[abilify]] &new{2009-06-04 13:57:05 (木)};
-http://www.youtube.com/LauritsYudel#1 effects zoloft,   jczi,   -- [[soft viagra]] &new{2009-06-04 13:57:06 (木)};
-http://www.youtube.com/HarriJerrard#1 tamiflu,   22156803795,   -- [[cheap ultram]] &new{2009-06-04 13:57:06 (木)};
-http://www.youtube.com/ShunVeasna#1 acomplia,   jlqmgsrkvol,   -- [[celexa]] &new{2009-06-04 13:57:10 (木)};
-http://www.youtube.com/ColtonThemba#1 abana,   676198,   -- [[revatio]] &new{2009-06-04 13:57:11 (木)};
-http://www.youtube.com/HarriJerrard#1 tamiflu,   266,   -- [[celexa]] &new{2009-06-04 13:57:12 (木)};
-http://www.youtube.com/ColtonThemba#1 habana,   =-PP,   -- [[tamiflu]] &new{2009-06-04 13:57:13 (木)};
-http://www.youtube.com/PontusHemming#1 phentrimine,   cdjf,   -- [[ultram online]] &new{2009-06-04 13:57:14 (木)};
-http://www.youtube.com/MikheilEstebe#1 levita,   85287397864,   -- [[roaccutane]] &new{2009-06-04 13:57:15 (木)};
-http://www.youtube.com/MikheilEstebe#1 levita,   fmrempd,   -- [[abilify]] &new{2009-06-04 13:57:16 (木)};
-http://www.youtube.com/TaunoWebster#1 accupril,   0483,   -- [[buy xenical]] &new{2009-06-04 13:57:17 (木)};
-http://www.youtube.com/DexterPhilberts#1 prosac,   apqsa,   -- [[cialis]] &new{2009-06-04 13:57:17 (木)};
-http://www.youtube.com/PerseusRodolfo#1 generic tadalafil,   ncduzqklurqi,   -- [[accupril]] &new{2009-06-04 13:57:21 (木)};
-http://www.youtube.com/DexterPhilberts#1 prosac,   3609,   -- [[soft cialis]] &new{2009-06-04 13:57:22 (木)};
-http://www.youtube.com/LauritsYudel#1 generic zoloft,   cbev,   -- [[xenical]] &new{2009-06-04 13:57:23 (木)};
-http://www.youtube.com/SheldonRobert#1 clomid success,   019428,  http://www.youtube.com/EwaldElias#1 cheap adipex,   freefj,  http://www.youtube.com/NoakAmerigo#1 celexa,   0717815,  http://www.youtube.com/InnokentiJob#1 avandia,   >:OO,  http://www.youtube.com/RajeshHernando#1 valacyclovir,   zzou,   -- [[anastrozole]] &new{2009-06-05 05:14:20 (金)};
-http://www.youtube.com/KapilaTemitope#1 abilify,   %-P,  http://www.youtube.com/RuslanPatrizio#1 benadryl,   %[,  http://www.petitiononline.com/accutan/petition.html roaccutane,   >:OO,  http://www.youtube.com/ToreVadim#1 ciprofloxacin,   260371,  http://www.youtube.com/OzIestyn#1 cephalexin,   9683489,   -- [[abilify]] &new{2009-06-05 05:14:21 (金)};
-http://www.youtube.com/HeshamBelenus#1 augmentin,   8[,  http://www.youtube.com/EwaldElias#1 adipex p,   rkdhcogl,  http://www.youtube.com/SusilaBakr#1 atenolol side effects,   8530,  http://www.youtube.com/InnokentiJob#1 avandia,   >:]],  http://www.youtube.com/ColtenEelis#1 anastrozole,   nrnqu,   -- [[benedryl]] &new{2009-06-05 05:14:21 (金)};
-http://www.youtube.com/KapilaTemitope#1 abilify,   >:O,  http://www.youtube.com/RuslanPatrizio#1 benedryl,   %-],  http://www.youtube.com/GudmundIsrael#1 coumadin,   ovjqogbncqy,  http://www.youtube.com/InnokentiJob#1 avandia,   %-PPP,  http://www.youtube.com/DudelMin#1 biaxin,   73989829,   -- [[buy adipex]] &new{2009-06-05 05:14:22 (金)};
-http://www.youtube.com/HeshamBelenus#1 augmentin,   :-DD,  http://www.youtube.com/GudmundIsrael#1 coumadin,   8-]]],  http://www.youtube.com/ToreVadim#1 cipro side effects,   oqdovhiz,  http://www.youtube.com/OzIestyn#1 cephalexin 500mg,   %]],  http://www.youtube.com/ColtenEelis#1 anastrozole,   802199217411,   -- [[buy clomid]] &new{2009-06-05 06:51:04 (金)};
-http://www.youtube.com/HeshamBelenus#1 augmentin,   fhfrgecpgr,  http://www.youtube.com/EliezerTakis#1 alli,   gkw,  http://www.youtube.com/YuutoBartomeu#1 citalopram effects,   :-OOO,  http://www.youtube.com/DudelMin#1 bioxin,   %),  http://www.youtube.com/VernerKwasi#1 generic tadalafil,   wul,   -- [[augmentin]] &new{2009-06-05 06:51:05 (金)};
-http://www.youtube.com/BalaTheocritus#1 arimidex,   8385785639,  http://www.youtube.com/KapilaTemitope#1 abilify,   iyfkzu,  http://www.youtube.com/SheldonRobert#1 clomid and,   99729941,  http://www.petitiononline.com/accutan/petition.html roaccutane,   5208,  http://www.youtube.com/OzIestyn#1 cephalexin,   996386517047,   -- [[abilify]] &new{2009-06-05 06:51:06 (金)};
-http://www.youtube.com/BalaTheocritus#1 arimidex,   :-],  http://www.youtube.com/RuslanPatrizio#1 benadryl,   991699,  http://www.youtube.com/SheldonRobert#1 clomid and,   >:-)),  http://www.youtube.com/NoakAmerigo#1 celexa,   8-[[[,  http://www.youtube.com/ColtenEelis#1 anastrozole,   =-[[,   -- [[generic tadalafil]] &new{2009-06-05 06:51:07 (金)};
-http://www.youtube.com/RuslanPatrizio#1 benadryl,   6851124,  http://www.youtube.com/GudmundIsrael#1 coumadin,   718681799,  http://www.youtube.com/ToreVadim#1 cipro,   hdamnjfhtnfy,  http://www.youtube.com/RajeshHernando#1 aciclovir,   8))),  http://www.youtube.com/VernerKwasi#1 tadalafil,   828164,   -- [[coumadin]] &new{2009-06-05 08:29:59 (金)};
-http://www.youtube.com/KapilaTemitope#1 abilify,   8((,  http://www.youtube.com/EwaldElias#1 adipex p,   63042,  http://www.youtube.com/SusilaBakr#1 atenolol side effects,   hwiaaudntdey,  http://www.youtube.com/AkiBlake#1 bactrim ds,   :-PP,  http://www.youtube.com/NoakAmerigo#1 celexa,   942907,   -- [[coumadin]] &new{2009-06-05 08:30:00 (金)};
-http://www.youtube.com/RuslanPatrizio#1 benedryl,   %],  http://www.youtube.com/AkiBlake#1 bactrim ds,   gwpdtdy,  http://www.youtube.com/DudelMin#1 bioxin,   muzucdrxeyyh,  http://www.youtube.com/OzIestyn#1 cephalexin 500mg,   >:-D,  http://www.youtube.com/VernerKwasi#1 soft cialis,   402879,   -- [[citalopram]] &new{2009-06-05 08:30:01 (金)};
-http://www.youtube.com/EliezerTakis#1 alli,   :-((,  http://www.youtube.com/SusilaBakr#1 atenolol,   8-PPP,  http://www.youtube.com/RajeshHernando#1 valacyclovir,   8((,  http://www.youtube.com/YuutoBartomeu#1 citalopram,   nuacvc,  http://www.youtube.com/ColtenEelis#1 anastrozole,   491334,   -- [[accutane]] &new{2009-06-05 08:30:02 (金)};
-http://www.youtube.com/HeshamBelenus#1 augmentin,   kedrug,  http://www.youtube.com/EliezerTakis#1 alli,   ylefvuqdpcg,  http://www.youtube.com/NoakAmerigo#1 celexa,   vnywp,  http://www.youtube.com/YuutoBartomeu#1 citalopram side effects,   xayulkrifey,  http://www.youtube.com/VernerKwasi#1 buy cialis,   3034,   -- [[cephalexin 500mg]] &new{2009-06-05 10:07:35 (金)};
-http://www.youtube.com/BalaTheocritus#1 arimidex,   :-DD,  http://www.youtube.com/EliezerTakis#1 alli,   624036,  http://www.youtube.com/RajeshHernando#1 valacyclovir,   8449,  http://www.youtube.com/VernerKwasi#1 soft cialis,   rwbvxyfngvqq,  http://www.youtube.com/ColtenEelis#1 anastrozole,   wjoue,   -- [[citalopram hydrobromide]] &new{2009-06-05 10:07:36 (金)};
-http://www.youtube.com/KapilaTemitope#1 abilify,   lqxkuoiiyec,  http://www.youtube.com/SusilaBakr#1 atenolol,   :-O,  http://www.youtube.com/NoakAmerigo#1 celexa,   :-O,  http://www.youtube.com/RajeshHernando#1 valacyclovir,   %OOO,  http://www.youtube.com/VernerKwasi#1 generic tadalafil,   19147959803,   -- [[tadalafil]] &new{2009-06-05 10:07:37 (金)};
-http://www.youtube.com/SheldonRobert#1 on clomid,   ifwlivdwbw,  http://www.youtube.com/SusilaBakr#1 atenolol side effects,   %)),  http://www.youtube.com/ToreVadim#1 ciprofloxacin,   dzpnp,  http://www.youtube.com/RajeshHernando#1 valacyclovir,   evdvgimqi,  http://www.youtube.com/DudelMin#1 bioxin,   4790964460,   -- [[bactrim ds]] &new{2009-06-05 10:07:38 (金)};

#comment

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Copyright 2005-2008. ADOS Co., Ltd. All Rights Reserved.