5
<xsl:template match="HtmlCode">
    <xsl:copy-of select="child::*|text()"/>
</xsl:template>

<xsl:call-template name="HappyFriend">
    <xsl:with-param name="text" select="'i am a friggin' RRRRROOOOOOOVVVERRRRR~~'"/>
</xsl:call-template> 

<xsl:template name="HappyFriend">
        <xsl:param name="text"/>
        <HtmlCode>
            &lt;span&gt; &lt;%="text"%&gt;   &lt;/span&gt;
        </HtmlCode>
<xsl:template>

どういうわけか私はXSLTの問題を抱え続けています...私がやろうとしているのは、変数「text」の値を取得することです。 " レンプレート。

私は何が間違っているのですか?

4

3 に答える 3

10

いくつかの問題:

-文字列リテラル'i am a friggin' RRRRROOOOOOOVVVERRRRR~~'に不均衡な一重引用符が含まれています。あなたはおそらくしたい

<xsl:with-param name="text" select='"i am a friggin&#x27; RRRRROOOOOOOVVVERRRRR~~"'/>

--call-templateテンプレート定義の外部で発生することはできません。

--のように、使用する必要のあるパラメータを参照するにvalue-of-select

 &lt;span&gt; &lt;%="<xsl:value-of select="$text"/>"%&gt;   &lt;/span&gt;
于 2012-08-03T20:27:14.530 に答える
2

これが私があなたが望むと思うことをする正しい方法の1つです:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="HtmlCode">
        <xsl:copy-of select="child::*|text()"/>
        <xsl:call-template name="HappyFriend">
            <xsl:with-param name="text" select='"i am a friggin&apos; RRRRROOOOOOOVVVERRRRR~~"'/>
        </xsl:call-template>
    </xsl:template>
    <xsl:template name="HappyFriend">
        <xsl:param name="text"/>
        <HtmlCode>
          <span><xsl:value-of select="$text"/></span>
    </HtmlCode>
    </xsl:template>
</xsl:stylesheet>

この変換が次のXMLドキュメントに適用される場合(何も提供されていません!!!):

<HtmlCode/>

必要な正しい結果が生成されます。

<HtmlCode>
   <span>i am a friggin' RRRRROOOOOOOVVVERRRRR~~</span>
</HtmlCode>
于 2012-08-04T15:56:35.947 に答える
1

パラメータ についてはFAQを参照してください

   <xsl:template name="HappyFriend"> 
         <xsl:param name="text"/> 
         <HtmlCode> 
             <span> 
                <xsl:value-of select="$text"/> 
             </span> 
        </HtmlCode>  
     <xsl:template>
于 2012-08-03T20:29:00.010 に答える