2009-07-14 5 views
0

いいえ、私は困惑しています。 XSLTテンプレートに送信されたパラメータにピリオドが含まれていて、引用符がない場合は引用符を出力するかどうかをテストしたいと思います。私がテストしたいパラメータは、以下のテンプレートの "value"です。 contains関数がうまくいくはずですが、なんらかの理由で "value"の内容に関係なく常に引用符が出力されます。私は間違って何をしていますか?ありがとうXSLTに「期間」のチェック機能があります。

<!-- Add a JSON property --> 
<xsl:template name="addProperty"> 
    <xsl:param name="name" /> 
    <xsl:param name="value" /> 

    <xsl:value-of select="$name" /> 
    <xsl:text>:</xsl:text> 
    <xsl:if test="not(contains($value,'.'))">'</xsl:if> 
    <xsl:value-of select="$value" /> 
    <xsl:if test="not(contains($value,'.'))">'</xsl:if> 
    <xsl:text>,</xsl:text>  
</xsl:template> 
+0

あなたには、いくつかの入力を貼り付けることができ、いくつかの期待されるアウトプットと実際のアウトプット? – Welbog

答えて

1

テンプレートを呼び出すと、正常に動作します。どうやってそれを呼びますか?

<xsl:call-template name="addProperty"> 
    <xsl:with-param name="name" select="'abc'"/> 
    <xsl:with-param name="value" select="'123'"/><!-- quoted number --> 
</xsl:call-template> 
<xsl:call-template name="addProperty"> 
    <xsl:with-param name="name" select="'abc'"/> 
    <xsl:with-param name="value" select="123"/><!-- NOT quoted number --> 
</xsl:call-template> 
<xsl:call-template name="addProperty"> 
    <xsl:with-param name="name" select="'xyz'"/> 
    <xsl:with-param name="value" select="'456.789'"/><!-- quoted number --> 
</xsl:call-template> 
<xsl:call-template name="addProperty"> 
    <xsl:with-param name="name" select="'xyz'"/> 
    <xsl:with-param name="value" select="456.789"/><!-- NOT quoted number --> 
</xsl:call-template> 

そして、これは私が出力として得たものである:これは私が使用したものである

abc:'123',abc:'123',xyz:456.789,xyz:456.789, 

あなたはあなたが渡していると思うという名前のテンプレートに値を渡すことができませんでしたか?どのXSLTエンジンを使用していますか?

これをテストする良い方法は、あなたが便利の良いデバッガを持っていない場合、あなたの名前のテンプレートにこのような何かを追加し、それが生成するかを確認することです。

XXX<xsl:value-of select="$value"/>XXX 
YYY<xsl:value-of select="contains($value, '.')"/>YYY 
ZZZ<xsl:value-of select="not(contains($value, '.'))"/>ZZZ 
+0

あなたは正しいです。私はちょうど私がばかだと気づいた。私がテストしたいと思った入力で別のテンプレートが呼び出されました。ご迷惑おかけして申し訳ありません。 – Steve

関連する問題