Передача динамических атрибутов в коллективный. Xdv встроенный XSL - PullRequest
3 голосов
/ 21 апреля 2011

У меня есть следующий фрагмент в rules.xml

<!-- Fix search box to honour Plone rules-->
<replace css:theme="form#search">
    <form action="http://localhost:8080/LS/search" name="form1" id="search">
        <input type="text" name="SearchableText" onclick="make_blank();" onblur="keep_search();" class="search_text_style content_text2"/>       
        <input type="image" src="++resource++lsm/images/template/search.png" width="22" height="22" class="search_btn" />
</form>
</replace>

Как передать динамические атрибуты в XSL, чтобы я мог установить реальный URL-адрес на основе объекта сайта Plone?

Я могу сделать это, предоставив вспомогательные представления, изменив XDVTransform и т. Д., Но я хотел бы сначала узнать, какой подход рекомендуется здесь.

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Обратите внимание, что в plone.app.theming / Diazo вы сможете определять параметры с помощью TAL и передавать их в вашу тему.

Я думаю, что в этом случае я бы просто взял фактический поисковый URL (или домашний URL) из содержимого со значением атрибута-*.

0 голосов
/ 21 апреля 2011

Я думаю, вам нужен глобальный <xsl:param> для этого .

Как правило, значение глобального параметра устанавливается инициатором преобразования непосредственно перед началом преобразования. Это общепризнанный общий способ передачи нестатических значений преобразования XSLT (известных во время компиляции таблицы стилей).

Вот пример :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:param name="pUrl" select="'http://www.cnn.com'"/>

 <xsl:template match="/">
  <t href="{$pUrl}"/>
 </xsl:template>
</xsl:stylesheet>

когда это преобразование применяется к любому документу XML (не используется), результат будет :

<t href="http://www.cnn.com" />

Способ задания значения глобального параметра зависит от реализации и зависит от одного процессора XSLT к другому. Прочтите документацию по вашему процессору XSLT, чтобы узнать, как это сделать.

...