XSLT karşılaştırarak / PHP geçirilen bir param kullanarak sıralama

0 Cevap php

Ben PHP xsl dosyasına iletilir params'ı kullanarak koşullu testleri ve türlü yapmanın bir sorunu yaşıyorum. Ben bir dize değeri test dayalı bir maç yapabilir ve açık adını kullanarak sıralayabilirsiniz, ancak değişkenler biriyle çalışmak için alınamıyor. Burada XSL ve ilgili XML bir fragmanıdır.

<Products xmlns:b="http://www.viator.com/affiliateXML2/base" xmlns="http://www.viator.com/vap">
<Product>
<ProductName>Washington DC Guided Day Tour</ProductName>
<ProductCategories>
<ProductCategory>
<Group>Tours &amp; Sightseeing</Group>
<Category>Full-day Tours</Category>
<Subcategory>City Tour</Subcategory>
</ProductCategory>
<ProductCategory>
<Group>Tours &amp; Sightseeing</Group>
<Category>Bus &amp; Minivan Tours</Category>
<Subcategory>City Coach Tour</Subcategory>
</ProductCategory>
</ProductCategories>
</Product>
</Products>

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:v="http://www.viator.com/vap">
<xsl:output method="html" omit-xml-declaration="yes" encoding="UTF-8"/>
<xsl:param name="sortBy"/>
<xsl:param name="catGroup"/>
<xsl:template match="v:Products">
    <xsl:for-each select="v:Product/v:ProductCategories/v:ProductCategory"> 
    <xsl:if test="string(v:Group) = $catGroup">
      <xsl:apply-templates select="../../."> 
      <xsl:sort select="$sortBy" order="ascending"/>
      </xsl:apply-templates>
    </xsl:if>
    </xsl:for-each>
</xsl:template>
<xsl:template match="v:Product">
<xsl:variable name="name" select="v:ProductName" />
<xsl:variable name="thumb" select="v:ProductImage/v:ThumbnailURL" />
<xsl:variable name="url" select="v:ProductURLs/v:ProductURL" /> 
<xsl:variable name="rating" select="v:ProductStarRating/v:AvgRating" />
<div class='rest_block'>
<ul>
<li class='name'><xsl:value-of select="v:ProductName"/></li>
<img class='stars' src='/images/global/hotels/{$rating}stars.png' alt='User Rated {$rating} Stars' />
<li><ul class='top'>
<li class='inline'><em>Category : </em>
<xsl:for-each select="v:ProductCategories/v:ProductCategory">
<xsl:value-of select="v:Group"/> 
<xsl:if test="position()!=last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each></li>
<li class='inline'><em>ID: </em><xsl:value-of select="v:ProductCode"/></li>
</ul></li>
<li class='blurb'><img class='h_thumb' src='{$thumb}' alt='{$name}' />
<em>Description:</em><xsl:value-of select="v:ProductText"/></li>
<li class='low_rate' id='tour'>$<xsl:value-of select="v:Pricing/v:PriceUSD"/><span>Per person rate</span><a class='sel_hotel' href='{$url}'>Select Tour</a></li>
<li><ul class='info'>
<li class='inline'><em>Commences: </em><xsl:value-of select="v:Commences"/></li><br/>
<li class='inline'><em>Duration: </em><xsl:value-of select="v:Duration"/></li>
</ul></li>
</ul>
</div>

</xsl:template>
</xsl:stylesheet>

Bu XSLT ile benim ilk gerçek deneyim ve ben params bu sitede bile birden aferin cevapları okuduktan sonra, ben çalışma değişkenleri alışkınım nasıl işe alınamıyor. Ben params geçirilen biliyorum ve onlar başka bir değişken referans olarak yerini istediğim değere sahip olduğunu. Ben doğru bir şekilde params başvuran yardıma ihtiyacım var. Herhangi bir yardım, teşekkür takdir edilmektedir.


UPDATE: @Alejandro: I didn't include those as they're being changed dynamically and don't really have a default.

<xsl:param name="sortBy" select="v:Rank"/> 

(Yani XML biçimlendirilmiş nasıl zaten sıralama rütbe varsayılan)

<xsl:param name="catGroup" select="'Day Trips &amp; Excursions'" /> 

(Bu bir dize değeri)

Bu PHP ile onları geçiyorum nasıl:

$processor->setParameter('', 'sortBy', 'v:'.$_GET['sort']); 
$processor->setParameter('', 'catGroup', 'Day Trips &amp; Excursions'); 

0 Cevap