Это первый раз, когда я когда-либо задавал вопрос, так что заранее извиняюсь, если я буду здесь.Счетчик XSL для определенного условия для SharePoint 2010 CQWP
Я пытаюсь собрать CQWP с функциональными возможностями слайдера jQuery. HTML, который я хочу вывести, должен быть в форме 2 UL. Первый с ликерами привязки li с # ассоциированным-ul-id
Вторые ul должны иметь идентификаторы, которые сопоставляются с элементами списка в первом. Например
<div id="tabs" class="news">
<div class="news-pagination">
<a href="#" id="carouseltext-prev">« Prev</a>
<ul id="carouseltext" class="horizontal-text order">
<li><a href="#tabs-1">System</a></li>
<li><a href="#tabs-2">School</a></li>
</ul>
<a href="#" id="carouseltext-next">» Next</a>
<div class="clear"> </div>
</div>
<ul id="tabs-1" class="feed order">
<li>title 1</li>
<li>title 2</li>
</ul>
<ul id="tabs-2" class="feed order">
<li>title 3</li>
</ul>
</div>
оригинальный XML начинается в виде
Мой XSL проходит через XML дважды, чтобы заполнить 2-х Ul. В первый раз он просто добавляет новый элемент списка, когда переменные __begincolumn и __begingroup являются истинными. Я разделил функциональность здесь, чтобы просто вывести заголовок. Вот урезанная версия XSL
<xsl:template match="/">
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row" />
<xsl:variable name="RowCount" select="count($Rows)" />
<xsl:variable name="FirstRow" select="1" />
<xsl:param name="ColNumber" select="1" />
<xsl:for-each select="$Rows" >
<xsl:variable name="CurPosition" select="position()" />
<xsl:variable name="BeginNewsItemsList1" select="string('<ul id="tabs-')" />
<xsl:variable name="BeginNewsItemsList2" select="string('"class="feed order">')" />
<xsl:variable name="BeginNewsItemsList" select="concat($BeginNewsItemsList1, $ColNumber, $BeginNewsItemsList2)" />
<xsl:if test="($CurPosition >= $FirstRow and $CurPosition <= $LastRow)">
<xsl:variable name="StartNewGroup" select="@__begingroup = 'True'" />
<xsl:variable name="StartNewColumn" select="@__begincolumn = 'True'" />
<xsl:when test="$StartNewGroup and $StartNewColumn">
<xsl:choose>
<xsl:when test="$CurPosition = $FirstRow">
<xsl:value-of disable-output-escaping="yes" select="$BeginNewsItemsList" />
</xsl:when>
<xsl:otherwise>
<!-- other instructions -->
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$StartNewGroup">
<xsl:call-template name="OuterTemplate.CallFooterTemplate"/>
<xsl:value-of disable-output-escaping="yes" select="concat($EndColumn, $BeginNewsItemsList)" />
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="OuterTemplate.Count">
<xsl:param name="ColNumber" />
<xsl:value-of select="$ColNumber + 1" />
</xsl:template>
Для второго по-каждого цикла я с настройкой счетчика, так что я могу добавить номер в конце идентификатора для каждого нового списка ид проблемы = «tabs-1», id = «tabs-2» и т. д.
В теории я думаю, что я должен установить параметр вне моего цикла for-each, а затем в цикле вызвать шаблон, который получает значение параметра и увеличивает его Это. Это означало бы, что он будет увеличиваться только при вызове шаблона.
Я не могу использовать position() для этого, поскольку он не соответствует значениям, которые я хочу. Я попытался последовать за несколькими блогами о рекурсивном программировании с помощью xsl, но я не могу найти ничего, что сработает. Я уверен, что я просто пишу XSL неправильно, но у меня сейчас немного свалка мозга.
Если кто-нибудь может указать мне в правильном направлении, это было бы здорово. Огромное спасибо.
Просто добавить, я знаю, что могу легко сделать это с помощью JQuery, но я Я пытаюсь свести скрипты на стороне клиента к минимуму. – Dee
... и это XSL-версия 1.0 – Dee
Непонятно, пытаетесь ли вы решить проблему jQuery или xsl) Если второй - просто укажите xsl) –