繁体   English   中英

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

[英]How do I allow/deny specific java method call from an XSL in Java?

主要目标:我想控制在通过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方法,而只能调用已明确注册为“集成扩展功能”的扩展功能。 这似乎是您要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM