Sharepoint XSLT-Dynamische Filterung
Ich versuche zu erstellen, die eine dynamische Reihe filter, basierend auf einer Variablen. Ich habe den folgenden code:
<xsl:variable name="filter" select="contain(@Title, 'title1') or contain(@Title, 'title2')"/>
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[string($filter)]" />
Dieser leider nicht zu funktionieren scheint und ich am Ende mit allen Zeilen. Ich vermute, dass die filter nicht wirklich angewandt, da kann ich kopieren und einfügen der Ausgabe des $filter-variable kopieren und fügen Sie es in der Zeile [], und es funktioniert wie erwartet.
Jemand versucht, dies zu tun, bevor?
Falls Sie sich Fragen, die filter-Variablen ist, erstellt unter Verwendung einer Vorlage, die zerlegt eine Zeichenkette wie:
title1 - title2 - title3
und gibt eine Zeichenfolge zurück, wie:
enthalten(@Titel, 'title1') oder enthalten(@Titel, 'title2') oder enthalten(@Titel, 'title3')
Jede Hilfe wäre sehr geschätzt werden!
InformationsquelleAutor TeckniX | 2009-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht tun, was Sie zu sein scheinen Versuch hier. Ein XPath-Ausdruck ist atomistischen, können Sie nicht speichern, teilen und wieder verwenden (abgesehen davon, dass es
contains()
, nichtcontain()
).Müssen Sie so etwas wie dieses:
Ihre "filter" funktioniert nicht, weil wenn
$filter
ist ein string, dann ist es ein string, sonst nichts. Ist es nicht eine Magische Bedeutung, nur weil es sieht aus wie XPath. 😉Diese
wertet eine nicht-leere Zeichenkette als das Prädikat. Und alle nicht-leeren Strings als true ausgewertet wird, die macht den Ausdruck zurück alle Knoten, die es gibt.
Wenn Sie möchten, eine dynamische filter basierend auf einem input-string, dann tun Sie dies:
Die Verwendung von Trennzeichen verhindert auch das "title11" von der Anzeige wenn man sich für "title1".
Stellen Sie sicher, dass Ihr filter startet und endet immer mit einem Trennzeichen, und verwenden Sie ein Trennzeichen an, das ist ziemlich unwahrscheinlich, dass jemals auftreten, als ein natürlicher Teil des
@Title
. (Zum Beispiel, könnten Sie
. Wenn Ihr Titel nicht multi-line-das ist ziemlich sicher.).Sie erkennen, dass
ist ASCII CR? Just sayin'. 😉 Ich weiß nicht wirklich sehen, wie Sie Abstürzen würde, die ganze Sache. Ich in der Regel mein edit XSLT-Dateien in einem normalen Texteditor, ich habe keine Erfahrung mit SP-Designer. Die durch Trennzeichen getrennte Zeichenfolge Ansatz ist der einfachste Weg zur Schaffung eines wirklich dynamischen filter. Es ist mehr oder weniger was Sie wollen, nur in einem XSLT - /XPath-konforme Art und Weise.InformationsquelleAutor Tomalak