Dies ist das erste Mal, dass ich jemals eine Frage so im Voraus entschuldigen, wenn ich hier jibber.XSL-Counter auf bestimmte Bedingung für SharePoint 2010 CQWP
Ich versuche, eine CQWP mit jQuery Tabs Slider-Funktionalität zusammen. Der HTML-Code, den ich ausgeben möchte, sollte in Form von 2 ULs vorliegen. Die erste mit li-Anchor-Tags mit # associated-ul-id
Die zweite ULs sollten IDs haben, die mit den Listenelementen in der ersten verknüpfen.
zB<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>
Die ursprüngliche XML startet zweimal in Form
Mein XSL geht durch die XML-off die 2 ul des zu füllen. Beim ersten Mal wird nur ein neues Listenelement hinzugefügt, wenn die Variablen __begincolumn und __bewegingroup true sind. Ich habe hier die Funktionalität gestrafft, um nur den Header auszugeben. Hier ist eine abgespeckte Version des 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>
Für die zweite foreach-Schleife Ich habe Probleme, einen Zähler einrichten, so dass ich die Nummer an das Ende der ID für jede neue Liste id hinzufügen = "Tabs-1", ID = "Tabs-2", etc.
In der Theorie denke ich, ich sollte einen Parameter außerhalb meiner for-each-Schleife festlegen und dann in der Schleife eine Vorlage aufrufen, die den Parameterwert und Inkrementen erhält es. Das würde bedeuten, dass es nur erhöht wird, wenn die Vorlage aufgerufen wird.
Ich kann position() nicht verwenden, da es nicht den gewünschten Werten entspricht. Ich habe versucht, ein paar Blogs über rekursive Programmierung mit xsl zu folgen, aber ich kann nichts finden, was funktioniert. Ich bin mir sicher, ich schreibe gerade die XSL falsch, aber ich habe jetzt ein bisschen eine Gehirn-Dump.
Wenn mir jemand in die richtige Richtung zeigen könnte, wäre das genial. Vielen Dank.
nur hinzufügen, ich weiß, dass ich dies einfach mit jQuery tun kann, aber ich Ich versuche, das clientseitige Scripting auf ein Minimum zu beschränken. – Dee
... und es ist XSL Version 1.0 – Dee
Es ist nicht klar, ob Sie versuchen, jQuery Problem oder xsl zu lösen) Wenn zweitens - geben Sie einfach Ihre xsl –