- PR -

XML Schema自体の文法をチェックするツール

1
投稿者投稿内容
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-07-09 16:10
ども、ご無沙汰しています。
ほむらです。
-----
最近XMLSchemaを勉強し始めているのですが
どなたかXMLスキーマ自体の文法をチェックしてくれるツールを
ご存じないでしょうか?

適正検証の方は下記のスクリプトでできるようなのですが
スキーマにエラーがある場合どこが原因なのかわからなくて困っています。
以上
よろしくお願いします。
コード:

-----------------
検証用のスクリプト
-----
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml;charset=SHIFT_JIS" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>XML Schema Validation Check</title>
<style type="text/css">
hr { margin: 1px; }
pre { margin: 1px; padding: 1px; font-size: 12pt;}
form { margin: 1px; }

.inputFile {
width:40em;
height:1.5em;
}

.error {
width:10em;
color:red;
font-weight:bold;
}

.source{
font-weight:bold;
white-space:pre;
}
</style>
<script type="text/javascript">
// 前回の結果削除
function Clear(){
var oElement;
oElement = document.getElementById('outputError')
oElement.innerHTML = "";
oElement = document.getElementById('outputSource')
oElement.innerHTML = "";
}

// 適正検証 ファイル名にはXMLを指定
// return: エラーなし(true)/エラーあり(false)
function Validation(FileName){
Clear(); // 前回の情報削除
if( FileName == '' ){
alert('チェックする XMLを指定してください.');
return false;
}
var x;
var outputElement;
var result = false;

try{
x = new ActiveXObject("MSXML2.DOMDocument.4.0");
}
catch(e){
}
finally{
if( x == null ){
alert("オブジェクトの作成に失敗");
return false;
}
}
x.async = false;
x.validateOnParse = true;
x.load( FileName );
if (x.parseError.errorCode != 0) {
// エラーがあるのでエラー内容を表示
outputElement = document.getElementById('outputError');
with(x.parseError){
var szError = "\r\n" + "Line " +line + ":" + linepos + ":" +
srcText + "\r\n----------\r\n" + reason;
outputElement.appendChild( document.createTextNode( szError) );
}
x.validateOnParse = false;
x.load( FileName );
result = false;
}
else {
outputElement = document.getElementById('outputError');
outputElement.appendChild( document.createTextNode("=== PARSE NO ERROR ===") );
result = true;
}
// ソースコードの表示
outputElement = document.getElementById('outputSource');
var szXML = x.xml;
while( szXML.indexOf("\t") != -1 ) szXML = szXML.replace("\t"," ");
outputElement.appendChild( document.createTextNode(szXML) );
return result;
}

function initializePage(){
// ファイル名指定のところにフォーカスを当てる
// ファイル名を指定は、
// パスを省略した場合このファイルのあるフォルダからの相対
document.getElementById('fileXML').focus();
if( window.navigator.userAgent.indexOf("MSIE") == -1 ){
alert("これはie専用です。");
document.getElementById('buttonValidation').disabled=true;
}
}
</script>
</head>
<body onload="initializePage();">
<form id="form01" method="get" action="#" onsubmit="Validation(document.getElementById('fileXML').value); return false;">
<p>
<input type="file" id="fileXML" name="fileXML" class="inputFile" value="data.xml" /><br/>
<input type="button" id="buttonValidation" value="検証" onclick="Validation(document.getElementById('fileXML').value); return false;" />
<input type="button" value="Refresh" onclick="self.location.reload();" />
</p>
</form>
<hr/>
<pre class="error" id="outputError">エラーの内容が表示されます</pre>
<hr/>
<pre class="source" id="outputSource">検証したソースファイルの内容が表示されます</pre>
<hr/>
</body>
</html>



# BBコードを忘れていたので追加

[ メッセージ編集済み 編集者: ほむら 編集日時 2004-07-10 01:23 ]
TAKABE
常連さん
会議室デビュー日: 2003/05/14
投稿数: 43
投稿日時: 2004-07-09 17:00
 ほむらさま、こんにちは。
「XSV」
http://www.w3.org/XML/Schema#XSV
 を使ってValidateしていると、時々有意義なエラーメッセージをもらうことがあります。ただし、わけがわからないことも少なくありませんし、英語です。
 ちなみに上記ページの上の方にいろいろと便利そうなツールが並んでいて、私は試したことがありませんが、そういった目的に使えるものがあるかもしれません。
 あまり役立たないお答えですみませんでした。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2004-07-10 01:22
ども、ほむらです。
--------------
TAKABE氏へ
引用:

「XSV」
http://www.w3.org/XML/Schema#XSV
 を使ってValidateしていると、時々有意義なエラーメッセージをもらうことがあります。ただし、わけがわからないことも少なくありませんし、英語です。
 ちなみに上記ページの上の方にいろいろと便利そうなツールが並んでいて、私は試したことがありませんが、そういった目的に使えるものがあるかもしれません。



w3cのところにあったのですね。。。
いろいろと試してから返答しようかと思ったのですがちょっと時間がかかりそうなので
とり急ぎお礼まで。。

XSV と XSDValid ってツールをDLしてみました。
いろいろやってみます。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)