gpt4 book ai didi

java - 如何允许/拒绝来自 Java 中的 XSL 的特定 Java 方法调用?

转载 作者:行者123 更新时间:2023-11-29 09:20:01 25 4
gpt4 key购买 nike

主要目标:我想控制在通过 Java 解析 XSL 文件时允许调用哪些类和/或方法。

使用 TransformerFactory:

TransformerFactory factory = TransformerFactory.newInstance();
StreamSource xslStream = new StreamSource(inXSL);
Transformer transformer = factory.newTransformer(xslStream);
...
transformer.transform(in, out);

可以通过在 XSL 文件中调用 Java 方法:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="java">
...
<currentDay><xsl:value-of select="java:util.Date.new()" /></currentDate>

意思 java:util.Date.net() 是新的 Date().toString()。

我知道我可以使用:

factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, false);

但这否定了一切。

两个问题:

1) 如何控制允许调用哪些特定的 Java 方法?

2) 如果不能使用 TransformerFactory,我可以使用哪些其他 XSL 库来控制它?

最佳答案

从您的示例来看,您似乎正在使用 Xalan XSLT 处理器(Java 可扩展性因处理器而异)。

如果您迁移到 Saxon,那么默认情况下您将无法从您的 XSLT 代码中调用任意 Java 方法,您将只能调用已明确注册为“集成扩展函数”的扩展函数。这似乎是你所要求的。

关于java - 如何允许/拒绝来自 Java 中的 XSL 的特定 Java 方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7100206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com