2012-02-28 14 views
0

イム私のXMLのように私にフォントサイズを与えるXSLT変数の値を選択し、XSLファイル内の変数宣言を持つ

<xsl:variable name="check" > 
      <xsl:value-of select="normalize-space(substring-before(substring-after(@style,'FONT-SIZE:'),'pt'))"/> 
    </xsl:variable> 

としてフォントに設定します何でもそれは12,14,16

<xsl:template name="fontSize"> 
     <xsl:choose> 
      <xsl:when test="round($check=8) or round($check=7) or round($check=6)"> 
        <font size="1" face="$Fface"> 
          <xsl:value-of select="."/> 
        </font> 
      </xsl:when> 
      <xsl:when test="round($check=10) or round($check=9)"> 
        <font size="2" face="$Fface"> 
         <xsl:value-of select="."/> 
        </font> 
      </xsl:when> 
<xsl:otherwise> 
        <font size="3" face="$Fface"> 
          <xsl:value-of select="."/> 
        </font>   
      </xsl:otherwise> 
     </xsl:choose> 
    </xsl:template> 
です

は、私が選択したクエリ

から必要なサイズを選択するためのテンプレートを作成し、私はサイズ属性に設定する選択したサイズを取得したい

<font size="$check" 
       face="{normalize-space(substring-before(substring-after(@style,'FONT-FAMILY:'),';'))}"> 

が正しいかどうか、またはこれを行う他の方法があります。

+0

あなたの現在の入力XMLを表示することができますし、出力を期待すると、簡単に手助けできるようになりますか?ありがとう! –

答えて

1

まず、これを置き換えます。このことにより、

<xsl:variable name="check" > 
     <xsl:value-of select="xxxxx"/> 
</xsl:variable> 

を:、また、はるかに効率的である可能性が高い

だけでなく、はるかに簡潔である
<xsl:variable name="check" select="xxxxx"/> 

。 (このミスは非常に広まっているようです)

第2に、私はこのことがあなたのプロジェクト全体の文脈で意味をなさないかどうかわかりませんが、フォント要素を生成するのではなく、現代的な方法はCSSを使うことです。出力

<span class="c{$check}"><xsl:value-of select="."/></span> 

を入力し、詳細なレンディションを制御するCSSクラスを定義します。