沙兰+;XSLT+;JAVA
我的xsl文件沙兰+;XSLT+;JAVA,java,xslt,xalan,Java,Xslt,Xalan,我的xsl文件 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:good="xalan://com.epam.laba.model.Good" xmlns:validator="xalan://com.epam.laba.validator.ValidatorXslGood"> <xsl:include href="parameter.xsl"/
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:good="xalan://com.epam.laba.model.Good"
xmlns:validator="xalan://com.epam.laba.validator.ValidatorXslGood">
<xsl:include href="parameter.xsl"/>
<xsl:param name="validator"/>
<xsl:param name="good"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/|node()|@*">
<xsl:if test="validator:validateGood($good)">
<xsl:copy>
<xsl:apply-templates
select="node()|@*" />
</xsl:copy>
</xsl:if>
</xsl:template>
但是
非静态Java函数“validateGood”的第一个参数不是有效的对象引用。
无法将数据类型“void”转换为“boolean”
你能解释一下怎么了吗
UPD:
ValidatorXslGood.java代码:
public class ValidatorXslGood {
private Good good;
private Map<String, String> setErrors;
private ResourceBundleManager errorManager;
public ValidatorXslGood() {
errorManager = new ResourceBundleManager();
errorManager.setResourceBundle(RESOURCE_BUNDLE__FOR_ERROR_FILE);
}
public Good getGood() {
return good;
}
public void setGood(Good good) {
this.good = good;
}
public boolean validateGood(Good good) {
if (checkingName(good.getName())) {
return true;
} else {
return false;
}
}
公共类验证器很好{
私善;
私有映射集错误;
私有资源BundleManager errorManager;
公共物品{
errorManager=new ResourceBundleManager();
setResourceBundle(用于错误文件的资源包);
}
公益{
归还货物;
}
公共物品(良品){
this.good=好;
}
公共布尔validateGood(良好){
if(checkingName(good.getName())){
返回true;
}否则{
返回false;
}
}
我尝试用XSL创建验证器
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:good="xalan://com.epam.laba.model.Good"
xmlns:validator="xalan://com.epam.laba.validator.ValidatorXslGood"
extension-element-prefixes="validator" >
<xsl:include href="parameter.xsl"/>
<xsl:variable name="validatorConstructor" select="validator:new()"/>
<xsl:param name="validator"/>
<xsl:param name="good"/>
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform"
xmlns:good=”xalan://com.epam.laba.model.Good"
xmlns:validator=”xalan://com.epam.laba.validator.ValidatorXslGood"
扩展元素前缀=“验证程序”>
但我有了新的错误,我不知道路径中的错误在哪里
找不到类“com.epam.laba.validator.ValidatorXslGood”。找不到
查找外部构造函数“com.epam.laba.validator.ValidatorXslGood”
您似乎错过了语法。语法应该是prefix:methodName(object,args),其中prefix是扩展名称空间前缀(需要声明为xmlns:prefix=“URI”extension-element-prefixes=“prefix…”),methodName是要在带有args参数的对象上调用的实例方法的名称
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:validator="xalan://com.epam.laba.parser.validator.ValidatorXslGood"
extension-element-prefixes="validator" ... >
<xsl:param name="validator"/> <!-- That is in reality validatorObject -->
<xsl:param name="good"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/|node()|@*">
<xsl:if test="validator:validateGood($validator, $good)">
...
...
请向我们展示validateGood
实现,或者至少是它的signatureheadpost…实际上是ValidateObject,但它不起作用我在XSL中创建对象它起作用了吗,如果你在Java中创建对象(XSL之外)?关于你的更新:(1)检查validateXslgood#validateXslgood()
构造函数未引发运行时异常(2)检查Xalan是否可以访问该类,即在应用程序服务器环境中,该类应与应用程序一起打包(而不是在服务器/libs
),因此首先检查上述代码是否适用于独立应用程序/单元测试。如果所有操作都失败,还应提供堆栈跟踪。
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:validator="xalan://com.epam.laba.parser.validator.ValidatorXslGood"
extension-element-prefixes="validator" ... >
<xsl:param name="validator"/> <!-- That is in reality validatorObject -->
<xsl:param name="good"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/|node()|@*">
<xsl:if test="validator:validateGood($validator, $good)">
...