2016-06-23 16 views
-1

条件一致に基づいて値を変更する必要がある次のテンプレートがあります。xslt1.0でxsl:ifの複数の条件を確認する方法

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes" version="1.0" encoding="UTF-8" method="xml"/> 

    <xsl:template match="text()" name="create"> 
     <xsl:param name="code"/> 
     <xsl:param name="boolean"/> 

     <xsl:if test="$boolean= 'True'"> 
      <xsl:value-of select="'Services'"/> 
     </xsl:if> 

     <xsl:if test="$code=7"> 
      <xsl:value-of select="'Accounts'"/>    
     </xsl:if> 
    </xsl:template> 

</xsl:stylesheet> 

これでは、最初の条件が働きます。 boolean = falseを渡すと何も割り当てられません。それがTrueに等しい場合、それはServicesを割り当てています。しかし、コードの場合、私が7に合格しても、それは割り当てられていません。私はこの

 <xsl:variable name="Category"> 
     <xsl:call-template name="create"> 
      <xsl:with-param name="code" select="s0:Code"/> 
      <xsl:with-param name="boolen" select="'True'"/> 
     </xsl:call-template> 
     </xsl:variable> 

S0のように呼び出しています

<xsl:if test="$code='7'"> 

も単一引用符との条件を試してみました:コード値7 任意の助けをいただければ幸いを持っている要素名です。

+1

コードを使用して問題を再現することはできません。 –

+0

あなたのコードを 'boolean = 'True'と' code = 7'でパラメータとしてテストしました。出力は 'ServicesAccounts'です。 – zx485

+0

Thecode – user3331421

答えて

1

テンプレートでは、パラメータの名前がcodebooleanであることが必要です。あなたはOccupationAgentという名前のパラメータで呼び出しています。テンプレートはこれらのパラメータを無視し、独自のパラメータ(この例では空の値)のデフォルト値で動作します。

+0

私はパラメータ名は問題ではないと思います。それはそれを受け入れるだろう。私はそれを変更して試しました。その後、それも動作しません。 – user3331421

+0

@ user3331421「機能していません」とは私が返信できるものではありません。あなたの質問を編集し、XML入力を含めて、** complete **と** reproducible **の例を投稿してください - [mcve]を参照してください。 –

関連する問題