gpt4 book ai didi

java - xsl变量初始化,方法不被调用

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:17 27 4
gpt4 key购买 nike

我是 xslt 的新手,有一个问题。

我有一个包含所有必要的 setter 和 getter 的验证类。例如它有这样的方法:

public void setProducer(String producer) {
this.producer = producer;
System.out.println("TEST");
}

当我启动我的应用程序时,我发现没有调用此方法。

我只在控制台中看到我的测试消息,当我在我的 xsl 文件中添加这样的代码时:

<xsl:value-of name="producerName" />

那么我的错误或 xsl:variable 在第一次使用时初始化在哪里?


我有这个代码:

<xsl:param name="category-name" />
<xsl:param name="subcategory-name" />
<xsl:param name="producer" />
<xsl:param name="model" />
<xsl:param name="color" />
<xsl:param name="date_of_issue" />
<xsl:param name="price" />
<xsl:param name="not_in_stock" />
<xsl:variable name="validator" select="validation:new()" />
<xsl:template match="/">
<xsl:for-each select="products/category">
<xsl:if test="name() = 'category' and @name=$category-name">
<xsl:apply-templates select="subcategory[@name=$subcategory-name]" />
</xsl:if>
</xsl:for-each>
</xsl:template>

<xsl:template match="subcategory">
<xsl:apply-templates select="good" />
<xsl:variable name="errorSize"
select="validation:getErrorListSize($validator)" />
<xsl:if test="$errorSize = 0">
<xsl:variable name="producerName"
select="validation:setProducer($validator, $producer)" />

<xsl:variable name="setModel"
select="validation:setModel($validator, $model)" />
<xsl:variable name="setColor"
select="validation:setColor($validator, $color)" />
<xsl:variable name="setDateOfIssue"
select="validation:setDateOfIssue($validator, $date_of_issue)" />
<xsl:if test="$not_in_stock != null">
<xsl:variable name="setPrice"
select="validation:setPrice($validator, $price)" />
</xsl:if>
<xsl:variable name="validationResult"
select="validation:validateAllFields($validator)" />
VALIDATION FINISHED
<xsl:variable name="errors"
select="validation:getErrorListSize($validator)" />
<xsl:value-of select="$errors"/>

</xsl:if>
<xsl:if test="$errorSize != 0">
REDIRECT. ERROR EXISTS
</xsl:if>
</xsl:template>

最佳答案

第一点:XSLT 中的扩展函数高度依赖于产品,所以如果不告诉我们您使用的是什么 XSLT 处理器,您就不能真的问我们这个问题。

混合声明式语言和过程式语言总是很棘手(最好避免这种情况)。当然,在 XSLT 中,优化处理器将延迟评估变量,这意味着如果未引用变量,则不会对其进行评估。

在 Saxon 中,如果您“假装”在结果树中使用方法的结果,通常可以避免调用具有副作用的 Java 方法;您可以通过从 xsl:value-of 指令调用该方法来实现。

关于java - xsl变量初始化,方法不被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13948074/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com