web-dev-qa-db-ja.com

XMLスキーマ。 Base64binaryタイプとStringタイプ

XML要素からBase64文字列をデコードする必要があります。 type="xs:base64binary"で定義された要素とtype="xs:string"で定義された要素に違いはありますか?一部のXSD開発者は、エンコードされた文字列をbase64binaryとしてマークすることを拒否します。違いがない場合、type="xs:base64binary"の使用は何ですか?

12
kirill.login

仕様 を正しく理解していれば、意味の違いがあります。

base64Binary要素には、base64としてエンコードされた任意のバイナリデータが含まれています。これにより、基本的に文字列(または少なくとも文字列互換)になります。

一方、文字列には印刷可能な文字が含まれており、通常は単語や文章(自然言語)を構成します。特定の文字が許可されていないため、任意の(バイナリ)データを含めることはできません。

base64Binaryを使用して、デコードされたデータが人間の消費に適していないことを示すことができます。stringは読み取り可能/印刷可能です。

14
CoDEmanX

XSDのbase64Binarystringには間違いなく違いがあります。

  • base64Binaryは、Base64でエンコードされたバイナリデータを表します。 値空間 は、固定長のバイナリオクテットのセットです。その字句空間は、a-zA-Z0-9+/=、プラス 空白 に制限されています=。
  • stringは文字データを表します。その value spacecharacters の有限長シーケンスのセットです。その字句空間は、 XML文字 で構成されることを超えて制約を受けません。
22
kjhughes