Ich hatte jetzt bei einer SharePoint Intranet Installation ein Problem bei der Darstellung eines Content Query WebParts (CQWP). Auf der Startseite und einigen SubSites wurden uber ein CQWP alle Artikel (CMS Elemente) eines ContentTyps dargestellt. Ich habe mich an das Standardverfahren gehalten.

1. Content Query WebPart in eine WebPartzone ziehen       2. Den WebPart exportieren       3. CommonViewField um die notigen Felder erweitern       4. WebPart importieren       5. Neuen XSLT Style anlegen fur die Darstellung (ItemStyle.xsl)        

image 6. XSLT Funktion fur das entfernen der HTML Tags einsetzen und anwenden 7. WebPart auf den Startseiten plazieren

Wie nicht anders zu erwarten hat alles super funktioniert. Bei einer Anpassung an die Aggregation auf einer SubSite ist dann allerdings ein sehr unschones Phanomen aufgetreten. Die Aggregation sollte kein ItemLimit definieren. Der Custom Item Style mit der Vorschau des HTML Body war ausgewahlt. Nach dem Entfernen des Hakens fur das ItemLimit und dem Bestatigen mit OK, kam die Seite nicht mehr zuruck. Im Eventlog war zu sehen, dass ein .NET Runtime Error den IIS in die Knie gezwungen hatte. Etwas “Trial and Error” hat auf die Funktion zum Entfernen der HTML Tags gedeutet. Ich habe kurz uber Google gesucht und eine Alternative gefunden. Das Einsetzen des modifizierten XSLT hat die Aggregation korrekt dargestellt und fuhrte nun zu keinem Fehler mehr. Es muss wohl irgendwo ein HTML Konstrukt existieren, welches die erste Funktion zum Absturz bringt. Mich hat es allerdings sehr uberrascht, dass es gleich den ganzen WebServer mit runter gezogen hat. Erst ein IISRESET hat die Site wieder hoch gebracht.

Funktionierendes XSLT zum Entfernen der HTML Tags:

<span class="lnum">   1:</span> <span class="kwrd"><</span><span class="html">xsl:template</span> <span class="attr">name</span><span class="kwrd">="removeHtmlTags"</span><span class="kwrd">></span>




<span class="lnum">   2:</span>     <span class="kwrd"><</span><span class="html">xsl:param</span> <span class="attr">name</span><span class="kwrd">="html"</span><span class="kwrd">/></span>




<span class="lnum">   3:</span>     <span class="kwrd"><</span><span class="html">xsl:choose</span><span class="kwrd">></span>




<span class="lnum">   4:</span>         <span class="kwrd"><</span><span class="html">xsl:when</span> <span class="attr">test</span><span class="kwrd">="contains($html, '&lt;')"</span><span class="kwrd">></span>




<span class="lnum">   5:</span>             <span class="kwrd"><</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">="substring-before($html, '&lt;')"</span><span class="kwrd">/></span>




<span class="lnum">   6:</span>             <span class="rem"><!-- Recurse through HTML --></span>




<span class="lnum">   7:</span>             <span class="kwrd"><</span><span class="html">xsl:call-template</span> <span class="attr">name</span><span class="kwrd">="removeHtmlTags"</span><span class="kwrd">></span>




<span class="lnum">   8:</span>                 <span class="kwrd"><</span><span class="html">xsl:with-param</span> <span class="attr">name</span><span class="kwrd">="html"</span> <span class="attr">select</span><span class="kwrd">="substring-after($html, '&gt;')"</span><span class="kwrd">/></span>




<span class="lnum">   9:</span>             <span class="kwrd"></</span><span class="html">xsl:call-template</span><span class="kwrd">></span>




<span class="lnum">  10:</span>         <span class="kwrd"></</span><span class="html">xsl:when</span><span class="kwrd">></span>




<span class="lnum">  11:</span>         <span class="kwrd"><</span><span class="html">xsl:otherwise</span><span class="kwrd">></span>




<span class="lnum">  12:</span>             <span class="kwrd"><</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">="$html"</span><span class="kwrd">/></span>




<span class="lnum">  13:</span>         <span class="kwrd"></</span><span class="html">xsl:otherwise</span><span class="kwrd">></span>




<span class="lnum">  14:</span>     <span class="kwrd"></</span><span class="html">xsl:choose</span><span class="kwrd">></span>




<span class="lnum">  15:</span> <span class="kwrd"></</span><span class="html">xsl:template</span><span class="kwrd">></span>

Fehlerhaftes XSLT zum Entfernen der HTML Tags:

<span class="lnum">   1:</span> <span class="kwrd"><</span><span class="html">xsl:template</span> <span class="attr">name</span><span class="kwrd">="removeMarkup"</span><span class="kwrd">></span>




<span class="lnum">   2:</span>     <span class="kwrd"><</span><span class="html">xsl:param</span> <span class="attr">name</span><span class="kwrd">="string"</span> <span class="kwrd">/></span>




<span class="lnum">   3:</span>     <span class="kwrd"><</span><span class="html">xsl:choose</span><span class="kwrd">></span>




<span class="lnum">   4:</span>         <span class="kwrd"><</span><span class="html">xsl:when</span> <span class="attr">test</span><span class="kwrd">="contains($string, '&lt;')"</span><span class="kwrd">></span>




<span class="lnum">   5:</span>             <span class="kwrd"><</span><span class="html">xsl:variable</span> <span class="attr">name</span><span class="kwrd">="nextString"</span><span class="kwrd">></span>




<span class="lnum">   6:</span>                 <span class="kwrd"><</span><span class="html">xsl:call-template</span> <span class="attr">name</span><span class="kwrd">="removeMarkup"</span><span class="kwrd">></span>




<span class="lnum">   7:</span>                     <span class="kwrd"><</span><span class="html">xsl:with-param</span> <span class="attr">name</span><span class="kwrd">="string"</span> <span class="attr">select</span><span class="kwrd">="substring-after($string, '&gt;')"</span> <span class="kwrd">/></span>




<span class="lnum">   8:</span>                 <span class="kwrd"></</span><span class="html">xsl:call-template</span><span class="kwrd">></span>




<span class="lnum">   9:</span>             <span class="kwrd"></</span><span class="html">xsl:variable</span><span class="kwrd">></span>




<span class="lnum">  10:</span>             <span class="kwrd"><</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">="concat(substring-before($string, '&lt;'), $nextString)"</span> <span class="kwrd">/></span>




<span class="lnum">  11:</span>         <span class="kwrd"></</span><span class="html">xsl:when</span><span class="kwrd">></span>




<span class="lnum">  12:</span>         <span class="kwrd"><</span><span class="html">xsl:otherwise</span><span class="kwrd">></span>




<span class="lnum">  13:</span>             <span class="kwrd"><</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">="$string"</span> <span class="kwrd">/></span>




<span class="lnum">  14:</span>         <span class="kwrd"></</span><span class="html">xsl:otherwise</span><span class="kwrd">></span>




<span class="lnum">  15:</span>     <span class="kwrd"></</span><span class="html">xsl:choose</span><span class="kwrd">></span>




<span class="lnum">  16:</span> <span class="kwrd"></</span><span class="html">xsl:template</span><span class="kwrd">></span>