0

次の目標を達成するために、2つのXSLファイルを書き込もうとしています。

  1. 入力ドキュメントを暗号化することになっています。

  2. XMLドキュメントをバイナリエンコードすることになっています。

1)の出力例

<Response>
  <encryptedData>e070dee5cb4688c608ee</encryptedData>
</Response>

2)の出力例

<Response>
   <compressedData>ASCDee5cb4688c608ee</compressedData>
</Response>

機能#1には、文字列入力を受け取り、暗号化された文字列を返すJava拡張関数があります。しかし、入力ドキュメントを文字列として拡張関数に渡す方法がわかりません。

機能#2については、入力をバイナリXMLに変換する方法がわかりません。

4

2 に答える 2

0

XSLT は、XML ドキュメントを表す元の文字列を正確に再現することはできません-- XML パーサーによって生成された XmlDocument から再構築できないさまざまな字句の特殊性 (およびエンティティ参照の置換) のため、XSLT プロセッサが認識する入力です。 .

ドキュメント オブジェクト ( /)を拡張機能に渡すと、Java 関数はOuterXml()またはのようなメソッドを使用しInnerXml()て、XML ドキュメントの可能な表現の 1 つを取得できます。

于 2012-08-30T13:12:06.223 に答える
0

XSLT から Java 関数を呼び出す方法に関する最初の質問に対する回答しかありません。スタイルシート宣言では、名前空間を定義する必要がありますxmlns:filecounter="mappings.GenerateSequenceNumber"

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:filecounter="mappings.GenerateSequenceNumber"
exclude-result-prefixes="filecounter" version="1.0">
<xsl:output indent="yes"/>

この場合、Java 関数はパッケージ「mappings」にあり、Java クラスは「GenerateSequenceNumber」と呼ばれます。

スタイルシートで Java 関数を呼び出すときは、たとえば次のようにします。

<xsl:value-of select="filecounter:getSequenceNumber('countit',3)"/>

したがって、Java クラスでメソッド「getSequenceNumber」を呼び出し、Java 関数が必要とする変数を括弧内に渡します。

残念ながら、2 番目の質問についてはお答えできません。

于 2012-08-30T07:12:47.700 に答える