2011-12-11 89 views
0

的非靜態方法,我需要通過調用java類驗證非靜態方法驗證XSL中的某些字段驗證在XSL的一些領域。 我想創建這個類的對象並將其傳遞給xsl。之後 - 我想檢查是否發現錯誤。我需要通過調用Java類

如果我製作類的方法Valifator靜態 - 一切正常。 OR: 如果我在xsl中創建類Validator的對象 - 所有工作都很好。

但如何使用非靜態方法?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" 
xmlns:validatorns="xalan://project.xmlxsl.xml.Validator" 
extension-element-prefixes="validatorns"> 

<xsl:output method="xml" indent="yes"/> 
<xsl:param name="name" /> 
<xsl:param name="validator" /> 

<xsl:variable name="checkName" select="validatorns:checkName($validator,$name)" /> 
... 
<xsl:choose> 
<xsl:when test="$checkName"> 
... 
</xsl:when> 
</xsl:choose> 

</xsl:stylesheet> 
+0

我有麻煩理解你的問題。請重新說明。也許與我們分享一些Java代碼。 –

+0

對不起。我正在重申我的問題 –

回答

1

從XSLT返回的值不是轉換後的文檔聽起來有點奇怪,因爲我的口味。但我想你可以使用ThreadLocal

1

如果您在XSL中有某種unqiue對象標識符,則可以爲您的Validator類使用靜態註冊表。

因此,您創建一個Validator,將其註冊爲文檔,並在使用正確的ID調用checkName時,註冊表將找到匹配的Validator並使用它。

轉換文檔後,您可以取消註冊Validator。確保使用對註冊表散列表的同步訪問來獲得線程安全性。