【问题标题】:xslt passing input document as String to java extensionxslt 将输入文档作为字符串传递给 java 扩展
【发布时间】:2012-08-24 18:04:15
【问题描述】:

我正在尝试编写两个 XSL 文件,试图实现以下目标:

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

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

1) 的示例输出

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

2) 的示例输出

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

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

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

【问题讨论】:

    标签: xslt binary


    【解决方案1】:

    我只能回答您关于如何从 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】:

      XSLT 不能准确地再现表示 XML 文档的原始字符串——由于无法从 XML 解析器生成的 XmlDocument 重构的各种词汇特性(和实体引用的替换)—— - 这是 XSLT 处理器看到的输入。

      您可以将文档对象 (/) 传递给扩展函数,然后 Java 函数可以使用 OuterXml()InnerXml() 之类的方法来获取 XML 的一种可能表示形式文件。

      【讨论】:

        猜你喜欢
        • 2021-09-24
        • 1970-01-01
        • 1970-01-01
        • 2011-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多