簡體   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