Xalan+ XSLT+ JAVA

Meine xsl-Datei

<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-code erzeugen, validator und festgelegt xsl

    Good good=fillGood(parameters); 
    ValidatorXslGood validatorXslGood=new ValidatorXslGood();
    Source sourceXSL = new StreamSource(xsltFile);
    Transformer transformer = factory.newTransformer(sourceXSL);
    transformer.setParameter(SUBCATEGORY_ID_VALUE, subcategoryId);
    transformer.setParameter(GOOD, good);
    transformer.setParameter(VALIDATOR, validatorXslGood);

    transformer.transform(xmlSource, new StreamResult(outWriter));

aber

Das erste argument für die nicht-statischen Java-Funktion 'validateGood' ist kein Gültiger Objekt-Referenz.
Können nicht konvertieren Daten-Typ 'void' zu 'boolean'.

Können Sie mir erklären, was falsch?

UPD:

ValidatorXslGood.java code:

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;
    }
}

Ich versuche erstellen validator in 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"/>

........

aber ich habe neue Fehler, und ich kann nicht verstehen, wo Fehler im Pfad

Cannot find class 'com.epam.Labe.validator.ValidatorXslGood'. Nicht
finden externe Konstruktor 'com.epam.Labe.validator.ValidatorXslGood'.

  • Bitte zeigen Sie uns validateGood Umsetzung, oder zumindest seine Unterschrift
  • UPD-Kopf-Beitrag...
InformationsquelleAutor Ivan | 2011-09-13
Schreibe einen Kommentar