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 文字に制限したいのですが、どうすれば制限できますか。

4

1 に答える 1

1

まず、<div class="left-wrap">カテゴリエントリごとに繰り返すことを意図していますか、それともすべてのカテゴリを含める必要がありますか?私がここで見ているものを考えると、それが最も理にかなっているように思われるので、後者を想定します。

その場合、dataテンプレートは次のようになります。

<xsl:template match="data">
    <h1><xsl:value-of select="$page-title"/></h1>
    <xsl:apply-templates select="categories"/>
</xsl:template>

これはノードと一致し、categoriesすべてのカテゴリエントリのコンテナを設定できるようになります。

<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サイトからこのユーティリティを試してください。

于 2011-07-14T12:38:58.003 に答える