2012-08-30 34 views
0

我试图写两个XSL文件,努力实现以下目标:XSLT通过输入文档作为字符串java扩展

  1. 它应该输入文档进行加密。

  2. 它应该对XML文档进行二进制编码。的1

实施例输出)的2

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

实施例输出)

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

对于功能#1,我有一个Java扩展函数采用一个串输入,并返回一个加密字符串。但我不知道如何将输入文档作为字符串传递给扩展函数。

对于功能#2,我不确定如何将输入转换为二进制XML。

回答

0

XSLT不能确切地再现表示XML文档原始字符串 - 由于其不能够从产生的XmlDocument的以重构各个词汇特殊性(和实体referencies的取代)通过XML解析器 - 这是XSLT处理器看到的输入。

可以传递到扩展功能的文档对象(/,然后Java函数可以使用像OuterXml()InnerXml()的方法来获取XML文档的一种可能表示。

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函数是在包“映射”和Java类被称为“GenerateSequenceNumber”。

当调用在样式表的Java函数,你比如做:

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

所以你调用方法“getSequenceNumber”在您的Java类,并传递任何变量的Java函数在括号需要。

我希望这会有所帮助。不幸的是,我不能帮你解决第二个问题。

此致 彼得