0

ページ内のデータを検証しようとしています。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:item="http://www.myspace.com/item"
    xmlns:shop="xalan://my.app.xslt.model.Shop" xmlns:valid="xalan://my.app.xslt.validation.ShopValidator"
    xmlns:exsl="http://exslt.org/common">

フィールドを持つモデルと、すべてのフィールドをチェックするためのメソッドを持つクラスバリデーターがあります。

そして並んで

<xsl:if test="valid:isNotEmptyData(shop:getOwner($item)) != true()">
            <error message="The field OWNER is empty." />
        </xsl:if>

モデルにあるのに NoSuchMethodExtension を取得します

public class Shop{
  private String owner;
  public String getOwner(){
    return owner;
  }
}

そしてバリデータークラスで

public static boolean isNotEmptyData(String model){
  retutn model.isEmpty();
}

手伝って頂けますか?

4

1 に答える 1

1

メソッドShop.getOwner()には引数がありませんが、XSLT では 1 つの引数を使用して呼び出すのに対しshop:getOwner($item))、XSLT プロセッサは 1 つの引数を使用してメソッドを検索し、それを見つけることができないため、エラーが発生します。

何をすべきかgetOwner()わかりません-おそらくその引数から何らかの値を抽出する..? このような場合は、引数を受け入れて処理するように変更する必要があります。

ところで、

valid:isNotEmptyData(shop:getOwner($item)) != true()

標準の XPath 関数を使用して次のように記述できます。

 not(string(shop:getOwner($item)))

(文字列が空でない場合、文字列は true と見なされます)、または

string-length(shop:getOwner($item)) = 0
于 2012-08-25T18:00:49.310 に答える