2012-04-10 2 views
0

私はXMLメッセージを解析してテンプレートを呼び出すためのスクリプトを書こうとしています(これは私が入力のフォーマットを制御することはできません)。 XMLメッセージの一部のフィールドは、複数回表示されることがあります。このような場合、 "StringValue"の最後に数字を追加して、それをcall-templateのwith-param = "pet"に渡して、その出現を指定します。XSL xsl:numberとテキストを連結する方法は?

以下のコードは、私が望むことをしているようです。 XMLスパイはそれが無効なXMLだと言います。 "Dog/Color"の各テンプレートマッチに "StringValue"と "1"、 "StringValue"と "2"などを追加する方が良いでしょうか?例えば

:事前に

<xsl:template match="Dog/Color"> 
    <xsl:call-template name="FormatContents"> 
      <xsl:with-param name="pet">StringValue<xsl:number level="any"/></xsl:with-param> 
      <xsl:with-param name="color"> 
        <xsl:value-of select="."/> 
      </xsl:with-param> 
    </xsl:call-template> 
</xsl:template> 

ありがとう!

+0

http://stackoverflow.com/questions/10090271/xsl-how-to-concatenate -ext-with-xslnumber – thejartender

答えて

2

あなたが与えたフラグメントが有効である、あなたはエラーがそのビットから来よろしいですか?完全な例を投稿することが常にベストです。

入力:

<Dog> 
<Color>Red</Color> 
<Color>Green</Color> 
</Dog> 

XSLT 1:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="Dog/Color"> 
<xsl:call-template name="FormatContents"> 
    <xsl:with-param name="pet">StringValue<xsl:number level="any"/></xsl:with-param> 
    <xsl:with-param name="color"> 
    <xsl:value-of select="."/> 
    </xsl:with-param> 
</xsl:call-template> 
</xsl:template> 

<xsl:template name="FormatContents"> 
<xsl:param name="pet"/> 
<xsl:param name="color"/> 
[<xsl:value-of select="$pet"/>][<xsl:value-of select="$color"/>] 
</xsl:template> 
</xsl:stylesheet> 

出力:

[StringValue1][Red] 


[StringValue2][Green] 
+0

応答に感謝David;戻って二重のチェックをした後、私のエラーはXMLSpyが呼び出しテンプレートを見ないことから来ていることがわかりました。 – Mrc0113

0

は、私が何をしたいことだと思いposition() - すなわち:

<xsl:template match="Dog/Color"> 
    <xsl:call-template name="FormatContents"> 
    <xsl:with-param name="pet">StringValue<xsl:value-of select="position()"/></xsl:with-param> 
    <xsl:with-param name="color"> 
     <xsl:value-of select="."/> 
    </xsl:with-param> 
    </xsl:call-template> 
</xsl:template> 
+0

position()は、(一般的に)xsl:numberと同じ番号を与えません。 "any" –

関連する問題