2011-07-14 7 views
0

私はマスターページレイアウトを設定していましたので、すべてのページにデザインを含めたいと思います。それは完璧に機能します。私は自分のサイトの各ページにいくつかの部分を追加したい、これはユーティリティページを作成することで行いますが、問題はすべての内容を繰り返します。ここに私のコードですすべてのページにテンプレートを含めるには

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

<xsl:template match="/data"> 

    <h1><xsl:value-of select="$page-title"/></h1> 
<ul><xsl:apply-templates select="/categories/entry"/></ul> 

</xsl:template> 
<xsl:template match="categories/entry"> 
     <div class="left_wrap"> 

      <div class="large_video"><img src="{$workspace}/images/video.jpg" style="border:#393939 solid 1px;" /></div> 
      <div class="title1">Categories<img src="{$workspace}/images/arrow.jpg" /></div> 
      <div style="float:left; width:680px;"> 

       <div class="category_block"> 
       <div class="category_title"><xsl:value-of select="title"/></div> 
       <div class="category_image"><img src="{$workspace}/images/politics.jpg" /></div> 
       <div class="category_info"><xsl:value-of select="description"/></div> 
       <div class="date"><img src="{$workspace}/images/time.png" style="float:left;"/><p style="float:left; width:120px; margin-left:6px;">2 days ago</p></div> 
       </div><!--category_block END--> 

      </div>    
     </div> 
</xsl:template> 


</xsl:stylesheet> 

"class = 'category_block'" divだけを繰り返したいのですが、私はこのページで他のものが必要です。交響曲はどのように可能ですか?また、私は自分のホームページでカテゴリの文字数を100文字に制限したいのですが、どのように制限できますか?

答えて

1

まず、あなたの<div class="left-wrap">は、各カテゴリエントリに対して繰り返されることを意味しますか、それともすべてのカテゴリを含むべきですか?私は後者を仮定しようとしています、それは私がここで見ていることを考えれば最も理にかなっているようです。それがそうなら

することは、あなたのdataテンプレートは次のようになります。

categoriesノードと一致し、すべてのあなたのカテゴリのエントリ用のコンテナを設定することができます
<xsl:template match="data"> 
    <h1><xsl:value-of select="$page-title"/></h1> 
    <xsl:apply-templates select="categories"/> 
</xsl:template> 

<xsl:template match="categories"> 
    <div class="left_wrap"> 
     <div class="large_video"> 
      <img src="{$workspace}/images/video.jpg" style="border:#393939 solid 1px;" /> 
     </div> 
     <div class="title1">Categories<img src="{$workspace}/images/arrow.jpg" /></div> 
     <div style="float:left; width:680px;"> 
      <ul> 
       <!-- This will be your repeating block --> 
       <xsl:apply-templates select="entry"/> 
      <ul> 
     </div>    
    </div> 
</xsl:template> 

今度は、entryが複数ある場合、以下のentryテンプレートの内容がそれぞれ繰り返されます:

<xsl:template match="categories/entry"> 
    <li> 
     <div class="category_block"> 
      <div class="category_title"> 
       <xsl:value-of select="title"/> 
      </div> 
      <div class="category_image"> 
       <img src="{$workspace}/images/politics.jpg" /> 
      </div> 
      <div class="category_info"> 
       <xsl:value-of select="description"/> 
      </div> 
      <div class="date"> 
       <img src="{$workspace}/images/time.png" style="float:left;"/> 
       <p style="float:left; width:120px; margin-left:6px;">2 days ago</p> 
      </div> 
     </div><!--category_block END--> 
    </li> 
</xsl:template> 

明らかに、私はここでいくつかの仮定をしなければなりませんでした。また、XSLTでは、何かを行う方法は常に複数あります。

最後に、マークアップを少しきれいにすることを検討する必要があります。無関係な、非意味の多くdivなど。あなたの<div class="title1">はおそらく見出しであるべきです。同上<div class="category_title">

説明を切り捨てた最後の質問に答えるには、symphonyサイトからthis utilityをお試しください。

関連する問題