質問
XML 型のスキーマでデータを出力する際に、ある要素で名前空間を宣言した後、その要素の配下で同一の名前宣言を宣言しようとしましたが、配下のほうの要素には名前空間の値が出力できませんでした。
原因と対処方法を教えてください。
回答
■仕様説明
ある要素で名前空間を宣言した場合、その名前空間はその要素のコンテンツ全体に適用されます。
つまり、ある要素で名前空間を宣言した場合、配下の要素でも適用されます。このため、配下の要素で同一の名前空間を宣言した場合、既に適用済みのため値を省略します。
■対処方法
上記の動作はXML の名前空間の仕様に準拠しています。
このため、ある要素と同一の名前宣言の値を、ある要素の配下の要素に出力することはできません。
■回避策
既に宣言されている値とは別の値でいったん宣言しておいて、後続の処理で他のコネクターを使って変換するなどの対応をご検討ください。
たとえば、いったん XML ファイルとして出力しておいて、CSV コネクターで読み取った後で変換し、またファイルに書き出す、などの対応となります。
■補足(回避策に関する注意点)
同一コンテンツ内で、同一の名前空間を複数宣言している場合、読み取られないことがありますのでご注意ください。
たとえば、XMLコネクターの場合は、ある要素とその配下の要素で、同一の名前空間を宣言していた場合には、配下の要素の名前空間に関しては読み取りません。
コメント
0件のコメント
記事コメントは受け付けていません。