C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Borland C# Builder で検証を


(過去ログ 17 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■6609 / inTopicNo.1)  Borland C# Builder で検証をかけるとエラー
  
□投稿者/ サンダル (5回)-(2007/08/20(Mon) 15:11:59)

分類:[XML] 

ネットよりXMLとスキーマのサンプルをいただき、それに付随していた JavaScript で検証をかけるとエラーにならないのですが
Borland C# Builder で検証をかけるとエラーになってしまいます。

XMLのどの部分がよろしくないのかご教授ください。
(それともXMLパーサー?)

books.xml (XMLファイル)---------------------------------------------------

<?xml version="1.0" encoding="Shift_JIS" ?>
<ym:books xmlns:ym="urn:books">
<owner address="ABCDEFG@AAA.com">NAME</owner>
<book isbn="XXXX1-1111-1111-1">
<name>テスト</name>
</book>
</ym:books>

books.xsd (スキーマファイル1)---------------------------------------------------

<?xml version="1.0" encoding="Shift_JIS" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:include schemaLocation="bookSub.xsd" />

<xsd:element name="books">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="owner" type="ownerType"
minOccurs="1" maxOccurs="1" />
<xsd:element name="book" type="bookType"
minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

<xsd:attributeGroup name="bookAttr">
<xsd:attribute name="isbn" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="XXXX[0-9]{1}-[0-9]{4,5}-[0-9]{3,4}-[0-9]{1}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:attributeGroup>

<xsd:complexType name="bookType">
<xsd:sequence>
<xsd:choice>
<xsd:element name="name" type="xsd:string" />
<xsd:element name="title" type="xsd:string" />
</xsd:choice>
</xsd:sequence>
<xsd:attributeGroup ref="bookAttr" />
</xsd:complexType>
</xsd:schema>

bookSub.xsd (スキーマファイル2)---------------------------------------------------

<?xml version="1.0" encoding="Shift_JIS" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="ownerType" mixed="true">
<xsd:attribute name="address" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:schema>

C# ソース(少し省略) ---------------------------------------------------

String schemaPath1 = "books.xsd";
String documentPath = "books.xml";

XmlValidatingReader reader = new XmlValidatingReader( new XmlTextReader(documentPath) );

reader.ValidationType = ValidationType.Schema;

reader.Schemas.Add(null, schemaPath1);

reader.ValidationEventHandler += new ValidationEventHandler (ValidationHandler);

XmlDocument doc= new XmlDocument();

doc.Load(reader);

richTextBox1.AppendText(String.Format("Validation finished: {0} validation errors\n\n", _ValidationErrorsCount));
for(int i=0; i<_cnt; i++)
{
richTextBox1.AppendText(_msg[i]);
}

エラー内容 ---------------------------------------------------


'urn:books:books' 要素が宣言されていません。 file:///C:/temp/schemas_book_org/books.xml (2 , 2) でエラーが発生しました。

'owner' 要素が宣言されていません。 file:///C:/temp/schemas_book_org/books.xml (3 , 3) でエラーが発生しました。

他にも沢山・・・

引用返信 編集キー/
■6611 / inTopicNo.2)  Re[1]: Borland C# Builder で検証を
□投稿者/ シャノン (202回)-(2007/08/20(Mon) 16:28:36)
No6609 (サンダル さん) に返信
> XMLのどの部分がよろしくないのかご教授ください。

XML Schema で targetNamespace が無いから?
引用返信 編集キー/
■6613 / inTopicNo.3)  Re[2]: Borland C# Builder で検証を
□投稿者/ サンダル (6回)-(2007/08/20(Mon) 17:08:19)
シャノン さん こんにちは。
コメントありがとうございます。

No6611 (シャノン さん) に返信

> XML Schema で targetNamespace が無いから?

targetNamespace を付けたらエラーにならなくなりました。

しかし、JavaScript ではエラーにならないのがよく分かりません。
パーサーにより、結果が異なっているのでしょうか??

JavaScript ---------------------------------------------------

<html>
<head>
<title>XML文書の検証</title>
<script language="JavaScript">
<!--
var objScm=new ActiveXObject("MSXML2.xmlSchemaCache.6.0");
objScm.add("urn:books","C:\\temp\\schemas_book_org\\books.xsd");

window.alert("add");

var objDoc=new ActiveXObject("MSXML2.DOMDocument.6.0");
objDoc.async=false;
objDoc.schemas=objScm;

objDoc.load("C:\\temp\\schemas_book_org\\books.xsd");

window.alert("load");

var objErr=objDoc.parseError;
if(objErr.errorCode!=0){
str=objErr.errorCode + "\r";
str+=objErr.line + "行 " + objErr.srcText + "\r";
str+=objErr.reason;
window.alert(str);
}
else
{
window.alert("XML文書はスキーマに従っています");
}
//-->
</script>
</head>
<body>
<h1>XML SchemaでXML文書の構文チェック</h1>
</body>
</html>


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -