![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
外部ファイルで定義したXMLSchemaのデータ型をimportで取り込んで使おうとすると、エラーになってしまいます。
XMLSchemaで使用するデータ型を次のように定義しました。
------------- datatype.xsd ----------------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sd:schema
targetNamespace="http://datatype.com"
xmlns:datatype="http://datatype.com"
xmlns="http://datatype.com"
xmlns:sd="http://www.w3.org/2001/XMLSchema" >
<sd:simpleType name="html_xhtml_id">
<sd:restriction base="sd:token">
<sd:pattern value="[A-Za-z]+[A-Za-z0-9]*" />
</sd:restriction>
</sd:simpleType>
</sd:schema>
-------------------------------------------------
そして次のようにXMLSchemaで呼び出しました。
----------------- caller.xsd -----------------------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sd:schema
targetNamespace="http://example.com"
xmlns="http://sample.com"
xmlns:datatype="http://datatype.com"
xmlns:sd="http://www.w3.org/2001/XMLSchema" >
<sd:import namespace="http://datatype.com" schemaLocation="./datatype.xsd" />
<!-- ここでエラーが発生する模様 -->
<sd:element name="testElement" type="datatype:html_xhtml_id" />
</sd:schema>
-----------------------------------------------------------
エラーの内容(Java):
org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'datatype:html_xhtml_id' to a(n) 'type definition' component.
ちなみに、datatype.xsdで定義せずにcaller.xsdで定義したデータ型を使っても、エラーは発生しません。
何がいけないのでしょうか。
分かる方よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
VisualStudio 2005で試してみました。
caller.xsdのschema要素のxmlns属性が"http://sample.com"になっているのがだめみたいで、"http://example.com"にしたらエラーがなくなりました。
この回答への補足
------- caller.xsd ---------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sd:schema
targetNamespace="http://example.com"
xmlns="http://example.com"
xmlns:datatype="http://datatype.com"
xmlns:sd="http://www.w3.org/2001/XMLSchema">
<sd:import namespace="http://datatype.com" schemaLocation="./datatype.xsd" />
<!-- ここでエラーが発生する模様 -->
<sd:element name="testElement" type="datatype:html_xhtml_id" />
</sd:schema>
------- datatype.xsd --------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<sd:schema
targetNamespace="http://datatype.com"
xmlns:datatype="http://datatype.com"
xmlns="http://datatype.com"
xmlns:sd="http://www.w3.org/2001/XMLSchema">
<sd:simpleType name="html_xhtml_id">
<sd:restriction base="sd:token">
<sd:pattern value="[A-Za-z]+[A-Za-z0-9]*" />
</sd:restriction>
</sd:simpleType>
</sd:schema>
----- Test.java ------
package test.schema;
import java.io.InputStream;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
public class Test {
public static void main(String[] args) {
try {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setSchema(getSchema());
DocumentBuilder parser = dbf.newDocumentBuilder();
} catch (Exception e) {
e.printStackTrace();
}
}
private static Schema getSchema() throws Exception {
InputStream in = Test.class.getResourceAsStream("./caller.xsd");
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new StreamSource(in));
return schema;
}
}
--- ディレクトリ構成(こちらの環境と曖昧な点をなくすため ---
Java実行ディレクトリ
|-test
|-schema
|-Test.class
|-datatype.xsd
|-caller.xsd
検証して頂いてありがとうございます。
提示した例のxmlnsが間違っていて、余分な時間をとらせてしまいまってすみません。
こちらはVisualStudioの環境がなく、Javaでスキーマを読み込んでいて、問題は解決しません。
他の言語でXMLSchemaを扱ったことがないので、Javaの場合のみおかしくなるのかどうかが判断しかねますので、(結構時間かかると思うけど)他の言語でも試してみようと思います。
ちなみに、当方がJavaで試したものを捕捉のほうに書かせてもらいます。(さきほどのサンプル間違っていたので、もう一度すべて載せます。。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ASP・SaaS FC2 BLOG <AUDIO TAGを入れプレビューはOk テーンプレートを更新すると ✖ 1 2023/08/14 11:40
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- USBメモリー・SDカード・フラッシュメモリー 任天堂スイッチのSDカードについて SDカードの容量がいっぱいなので、新しくSDカードを買って、任天 3 2023/04/06 13:09
- 携帯型ゲーム機 ニンテンドースイッチについての質問です。 長文になるかもしれませんがすみません。 お昼頃にSwitc 3 2023/02/12 21:32
- その他(スマホアプリ・スマホゲーム) 初めてSDカードを使用してみたのですが、SDカードがアプリの移動に対応しておらず、内部からSDカード 5 2023/03/06 21:46
- 携帯型ゲーム機 ニンテンドースイッチについてです。 長文失礼します 今朝までポケモンSVをプレイしていたのですが、突 1 2023/02/12 21:19
- Android(アンドロイド) 128GB LAZOS マイクロSDカード 1280円 もっと良い商品ある? 4 2023/02/07 19:42
- その他(パソコン・スマホ・電化製品) スマホの本体に保存されてる写真をSDカードに移動したいのですが上手くできません。 AQUOS SH- 2 2022/08/14 22:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
順不同・任意のタグ
-
東芝のDynabookなのですがアン...
-
ルート要素ノードが2個ある場合?
-
CPUの考え方を教えてください ...
-
VBAでxmlファイルの置換をしたい
-
ExcelVBAで書き出した文字が化ける
-
Excel-VBAでXMLの複数ノードの...
-
XMLのHTMLへの変換 (初心者)
-
xmlはどんな用途で使われている
-
(携帯XHTMLで書いた)フォント...
-
TreeViewについて
-
アメブロ rss 読み込み
-
SNMP リンクダウンとノードダ...
-
Excel(2007以降)をxml形式に変...
-
XMLの実体参照とXSLT
-
xsltを利用して変換後改行が入る
-
XML文書の妥当性
-
VBでXMLファイルを作ると xmlns...
-
昔Winnyってありましたけど、あ...
-
値が無い場合のタグ出力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
順不同・任意のタグ
-
XMLで主キーを自動的に入力する...
-
Eclipse でBASIC認証するには
-
PHPでXMLデータ生成、スキーマ...
-
XMLSchemaのデータ型をインポー...
-
エクセルVBAのFunctionプロシー...
-
東芝のDynabookなのですがアン...
-
CPUの考え方を教えてください ...
-
昔Winnyってありましたけど、あ...
-
SNMP リンクダウンとノードダ...
-
バッチファイルでテキストファ...
-
ルート要素ノードが2個ある場合?
-
XMLで要素が記述された順番に意...
-
UTF-8でエンコーディングとはど...
-
あるノードリストに、特定の名...
-
google croud にあるファイルを...
-
XML、XSLTの適応エラー(IEから...
-
XPathで途中に名前空間が設定さ...
-
VBSでxmlの値を書き換えたい
-
特殊記号が勝手にエスケープさ...
おすすめ情報