-1

編集済み:以下の追加情報

" position () 関数を使用せずに< xsl:sort > を使用して昇順で画像を並べ替えようとしています。

< xsl:sort > 関数を使用して画像を昇順で並べ替えるという問題が発生しています。

これは、製品ASAMSCM195265783.jpgにリンクする XML 入力コードです。

             <objectImage code="ASAMSCM195265783" name="NX1000 Compact System Camera in White with 20-50mm Lens Product Image (Primary)" imageTypeName="Product Image" imageTypeCode="PRODUCT" objectTypeImageCode="PRIMARY_PRODUCT" objectTypeImageName="Primary Product Image" displayOrder="7">
                 <imageVersions>
                    <imageVersion versionTypeCode="PRODUCT_THUMB_SM" width="15" height="15" path="PRODUCT/PRODUCT_THUMB_SM/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_THUMB_M" width="32" height="32" path="PRODUCT/PRODUCT_THUMB_M/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_REGULAR" width="170" height="170" path="PRODUCT/PRODUCT_REGULAR/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_ENLARGED" width="500" height="500" path="PRODUCT/PRODUCT_ENLARGED/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_THUMB_L" width="36" height="36" path="PRODUCT/PRODUCT_THUMB_L/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_THUMB_XL" width="150" height="150" path="PRODUCT/PRODUCT_THUMB_XL/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_THUMB_110" width="110" height="110" path="PRODUCT/PRODUCT_THUMB_110/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_LARGE" width="300" height="300" path="PRODUCT/PRODUCT_LARGE/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_THUMB_50x50" width="50" height="50" path="PRODUCT/PRODUCT_THUMB_50x50/ASAMSCM195265783.jpg" link=""/>
                    <imageVersion versionTypeCode="PRODUCT_THUMB_75x75" width="75" height="75" path="PRODUCT/PRODUCT_THUMB_75x75/ASAMSCM195265783.jpg" link=""/>
                  </imageVersions>
             </objectImage>

他のASAMSCM195265783.jpg製品の XML の例は上記とまったく同じですが、違いはPRIMARY_PRODUCTの代わりにobjectTypeImageCode="OTHER_PRODUCT"displayOrder="8"および"9"だけです。

これは私の現在のXSLTコードです:

<xsl:sort select="displayOrder" data-type="number" order="descending"/>
            <li class="prodthumbimg">
              <a>
                <xsl:attribute name="id">
                  <xsl:text>thumb</xsl:text>
                  <xsl:value-of select="position()" />

HTML での結果は次のとおりです。

<li class="prodthumbimg"><a id="thumb10" href="javascript:void(swap(9));" target=""><img src="http://www.jessops.com/ce-images/PRODUCT/PRODUCT_THUMB_50x50/ASAMSCM195265783_009.jpg" alt="Samsung NX1000 Compact System Camera in White with 20-50mm Lens" title="Samsung NX1000 Compact System Camera in White with 20-50mm Lens"></a></li>

<li class="prodthumbimg"><a id="thumb9" href="javascript:void(swap(8));" target=""><img src="http://www.jessops.com/ce-images/PRODUCT/PRODUCT_THUMB_50x50/ASAMSCM195265783.jpg" alt="Samsung NX1000 Compact System Camera in White with 20-50mm Lens" title="Samsung NX1000 Compact System Camera in White with 20-50mm Lens"></a></li>

<li class="prodthumbimg"><a id="thumb8" href="javascript:void(swap(7));" target=""><img src="http://www.jessops.com/ce-images/PRODUCT/PRODUCT_THUMB_50x50/ASAMSCM195265783_008.jpg" alt="Samsung NX1000 Compact System Camera in White with 20-50mm Lens" title="Samsung NX1000 Compact System Camera in White with 20-50mm Lens"></a></li>

HTML 結果の 2 行目で、製品イメージASAMSCM195265783.jpgが間違った場所にあることに注意してください。その画像を HTML 結果の 3 行目に表示しようとしています。したがって、基本的に 2 番目と 3 番目の html 行を入れ替えて、製品画像の名前を適切に降順に並べ替える必要があります。

私が使用するときはいつでも:

<xsl:sort select="position()" data-type="number" order="descending"/>
        <li class="prodthumbimg">
          <a>
            <xsl:attribute name="id">
              <xsl:text>thumb</xsl:text>
              <xsl:value-of select="position()" />

それは仕事をしますが、位置() (製品の番号)にのみ基づいています。製品名内の番号ではなく、製品名に基づいてこれを実行しようとしています(それが理にかなっている場合)。事前に感謝します(さらに明確にする必要がある場合、またはさらに質問がある場合は、私に知らせてください

これはHTMLでの私の望ましい結果です:

<li class="prodthumbimg"><a id="thumb10" href="javascript:void(swap(9));" target=""><img src="http://www.jessops.com/ce-images/PRODUCT/PRODUCT_THUMB_50x50/ASAMSCM195265783_009.jpg" alt="Samsung NX1000 Compact System Camera in White with 20-50mm Lens" title="Samsung NX1000 Compact System Camera in White with 20-50mm Lens"></a></li>

<li class="prodthumbimg"><a id="thumb9" href="javascript:void(swap(8));" target=""><img src="http://www.jessops.com/ce-images/PRODUCT/PRODUCT_THUMB_50x50/ASAMSCM195265783_008.jpg" alt="Samsung NX1000 Compact System Camera in White with 20-50mm Lens" title="Samsung NX1000 Compact System Camera in White with 20-50mm Lens"></a></li>

<li class="prodthumbimg"><a id="thumb8" href="javascript:void(swap(7));" target=""><img src="http://www.jessops.com/ce-images/PRODUCT/PRODUCT_THUMB_50x50/ASAMSCM195265783.jpg" alt="Samsung NX1000 Compact System Camera in White with 20-50mm Lens" title="Samsung NX1000 Compact System Camera in White with 20-50mm Lens"></a></li>

この問題をさらに明確にするためにここに投稿する方が適切だと思われる追加情報が他にある場合は、お知らせください。

4

1 に答える 1

2

問題は、 displayOrderがobjectImage要素の属性であることだと思いますが、現在の並べ替えはそれを要素として扱っています。おそらく次のように変更する必要があります

<xsl:sort select="@displayOrder" data-type="number" order="descending"/>

また、これは質問のタイプミスである可能性があることに注意してください。「画像を昇順で並べ替える」と述べています。この場合、明らかに上記のxsl:sortで「降順」を「昇順」に変更する必要があります。

于 2012-10-02T14:46:19.127 に答える