XML形式の文字列という単一のパラメーターを使用してWebサービスを呼び出す必要があります。XSLT変換を介してこれを構築しています。ここまでは順調ですね。
問題はこのXSDフラグメントにあります:
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="title" type="xs:string" minOccurs="1"/>
<xs:element name="content" type="xs:base64Binary" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
これは(たとえば)このXMLに変換されます:
<attachment>
<title>test title</title>
<content>
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Inllc
yI/Pg0KPG1zZ3ByYXRpY2E+DQogICAgPHByYXRpY2E+DQogICAgICAgIDxwcm9jZXNzbz
4NCiAgICAgICAgICAgIDxjb2RQcm9jZXNzbz4xPC9jb2RQcm9jZXNzbz4NCiAgICAgICA
gICAgIDxjb2RJc3RhbnphUHJvY2Vzc28MzwvY29kSXN0YW56YVByb2Nlc3NvPg0KICAgI
CAgICAgICAgPGNvZFN0YXRvPjYwPC9jb2RTdGF0bz4NCiAgICAgICAgPC9wcm9jZXNzbz
4NCiAgICA8L3ByYXRpY2E+DQo8L21zZ3ByYXRpY2E+
</content>
</attachment>
はい、正解です。ファイルの内容をBase64バイナリ形式でXMLドキュメントに挿入する必要があります。
XSLTでプレースホルダーを挿入し、XMLドキュメントを処理して実際のファイルコンテンツに置き換えることを考えましたが、これらの機会にベストプラクティスがあるかどうか疑問に思っています。おそらく、私の知識やJavaをはるかに超えた素晴らしいXSTLトリックです。便利なツール。
どのようにそれをしますか?
注:添付ファイル付きのSOAPは使用できません。また、前述のアプローチは、添付ファイルが大きい場合に失敗する可能性があることを十分に認識していますが、現時点では、対応するものは動揺しません。