вторник, 23 декабря 2008 г.

Использование в XSLT атрибутов XML-элементов

Не так давно я рассказывал как в XSLT создавать элементы и атрибуты. Теперь опишу как использовать в XSLT атрибуты XML-элементов.

collection Item elementНаш нештатный дизайнер посчитал недостаточным, что ссылка изображения элемента и ссылка названия элемента ведут на страницу описания. Он решил еще добавить для этой цели специальную кнопку “details”. А аяксовую ссылку “add to cart” заменить графической кнопкой.

XML: фрагмент кода


<item-list>
...
<item id="50">
<item-name>
<a href="/store/item/50.xml">Crime and Punishment</a>
</item-name>
<item-description>Dostoevsky's first wife died in 1...</item-description>
<item-image>
<a href="/store/item/50.xml">
<img alt="Dostoevsky_crime_and_punishment" class="wide" src="/image/name/0000/0187/187/wide/Dostoevsky_Crime_And_Punishment.jpg?1220530414"/>
</a>
</item-image>
<item-price>$22.00</item-price>
<add-to-cart>
<a href="#" onclick="new Ajax.Request('/cart/ajax_check_item/50?buynow=0', {asynchronous:true, evalScripts:true}); return false;">add to cart</a>
</add-to-cart>
</item>
...
</item-list>


В шаблоне XSLT для атрибута href кнопки “details” я использовал соответствующий атрибут дочернего XML-элемента item-name/a: {item-name/a/@href}. А для атрибута onClick кнопки “add to cart” -- соответствующий атрибут элемента add-to-cart/a: {add-to-cart/a/@onclick}.

XSLT: фрагмент кода


<xsl:template match="item">
<div class="item indexItem">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="111" valign="top" width="148" class="thumb"><xsl:copy-of select="item-image/*" /></td>
<td valign="top"><p class="title">
<xsl:copy-of select="item-name/*" />
</p>
<p class="description"><xsl:value-of select="item-description" /></p>
<p class="price"><xsl:value-of select="item-price" /></p></td>
</tr>
<tr>
<td colspan="2"><div class="border">
<a href="{item-name/a/@href}" class="floatLeft"><img src="/images/templates/template-2/images/btn_details.gif" alt="details" title="show item details" /></a>
<a href="#" onclick="{add-to-cart/a/@onclick}" class="floatLeft"><img src="/images/templates/template-2/images/btn_add_cart.gif" alt="add to cart" title="add item to cart" /></a>
</div></td>
</tr>
</table>
</div>
</xsl:template>


Таким вот образом. Даже проще, чем использование <xsl:element> и <xsl:attribute>, как в статье XSLT: создание элементов и атрибутов.

0 Комментариев :

Отправить комментарий

Жги!