• 文字サイズ変更
  • S
  • M
  • L

FAQのNo.から検索


  • No : 25448
  • 公開日時 : 2016/09/06 16:27
  • 更新日時 : 2019/07/26 16:31
  • 印刷

【DataSpider Servista】 XML型のスキーマでデータを出力する際の名前空間の宣言について

XML 型のスキーマでデータを出力する際に、ある要素で名前空間を宣言した後、その要素の配下で同一の名前宣言を宣言しようとしましたが、配下のほうの要素には名前空間の値が出力できませんでした。
 
原因と対処方法を教えてください。
 
カテゴリー : 

回答

■仕様説明 
 
ある要素で名前空間を宣言した場合、その名前空間はその要素のコンテンツ全体に適用されます。
 
つまり、ある要素で名前空間を宣言した場合、配下の要素でも適用されます。このため、配下の要素で同一の名前空間を宣言した場合、既に適用済みのため値を省略します。
 
■対処方法
 
上記の動作はXML の名前空間の仕様に準拠しています。
(詳細は参考情報のリンクをご参照ください。)
 
このため、ある要素と同一の名前宣言の値を、ある要素の配下の要素に出力することはできません。
 
■回避策
 
既に宣言されている値とは別の値でいったん宣言しておいて、後続の処理で他のアダプタを使って変換するなどの対応をご検討ください。
 
たとえば、いったん XML ファイルとして出力しておいて、外部アプリケーション起動で変換するプログラムを呼び出す、またはCSV アダプタで読み取った後で変換し、またファイルに書き出す、などの対応となります。
 
■補足(回避策に関する注意点)
 
同一コンテンツ内で、同一の名前空間を複数宣言している場合、読み取られないことがありますのでご注意ください。
 
たとえば、XML アダプタの場合は、ある要素とその配下の要素で、同一の名前空間を宣言していた場合には、配下の要素の名前空間に関しては読み取りません。
 
 
参考情報
 
・XML Schema: 名前空間について(※外部サイト) 
 
該当部分は以下です。
 
名前空間は、要素の属性として宣言されます。 名前空間の宣言は、必ずしもルート要素で行う必要はなく、XML文書の任意の要素で宣言できます。 同一の接頭辞名を使用した別の名前空間の宣言によって上書きされない限り、宣言された名前空間の有効範囲は宣言された要素から開始され、その要素のコンテンツ全体に適用されます。
ここで、要素のコンテンツとは、その要素の<開始タグ>と</終了タグ>の間のコンテンツです。
 
目的別で検索
仕様確認

このFAQに関してのご意見をお聞かせ下さい。