XSD:別のXSDからデータ型をインポートするにはどうすればよいですか?
-
01-10-2019 - |
質問
XSDの次のスタートがあります。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:no="http://www.sychophants.com">
<xs:import namespace="http://www.sychophants.com" schemaLocation="current_obs.xsd"/>
...そして、他のいくつかの定義...
<xs:element name="noInDatPletd" ref="no:in_dat"/>
別の組織によって書かれたスキーマにIN_DATが存在します。私が本質的に私たちにやりたいことは、他のOgranizationのXSDで定義されているIN_DATタイプの要素を含むスキーマを作成します。
私はこれを正しいことにさえ近づいていますか?私はXMLにかなり初めてです。
私は得続けます
http://location_of_my_xsd/temp.xsd:79:9: Invalid: Undefined element
no{http://www.sychophants.com}:in_dat referenced from content model
から http://www.w3.org/2001/03/webdata/xsv, 、これはスキーマバリデーターです。
ありがとう。
編集:返信してくれた二人に感謝します。問題は、他の組織がスキーマのTargetNamesSpace属性を定義しなかったことです。その結果、名前空間をスキーマにインポートできないため、提供されているタイプを使用できません。
私はコードをコピー/貼り付けなければなりませんでした。これは私が避けたいものです...しかし、あなたはあなたが望むものをすべて持っていないと思います。
解決
明らかなエラーは1つだけです。使用してください ref="no:in_dat"
タイプを参照するため。使用する必要があります type="no:in_dat"
そこの。 ref
グローバルな要素を参照します(そして、name
属性)。
それとは別に、外部スキーマを自分のスキーマの横にあるバリデーターに渡しましたか?もちろん、スキーマを検証する必要があります。
他のヒント
変化することに加えて ref = に type =, 、スキーマの定義は正しいように見えます。エラーメッセージから、スキーマバリエーターがロードできないと推測しています current_obs.xsd 提供された回路図から、それは理にかなっています。バリデーターには、呼ばれるタイプがあるかどうかを確認する方法がありません in_dat スキーマをインポートできなかったためです。