SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




dsqueryresponse in verbundener Datenquelle codiert ampersands unterschiedlich

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
126 Beiträge
JasGo erstellt 21 Jan. 2010 16:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

dies ist eine Folgefrage aus meinem Kreuztabellen-Thread, aber das Problem scheint mir so speziell, dass ich mal neu ansetze:

Ich habe mir eine verbundene Datenquelle gebaut, die zwei "Referenztabellen" und eine "Muttertabelle" enthält. Ich schleife mit for-each nun durch die Werte der Referenztabelle und in den Kreuzungen zähle ich die in der Muttertabelle enthaltenen Werte mit

count(/dsQueryResponse/ListName/Rows/Row[@Param1=$p1 and @Param2 = $p2])

wobei Param1 der Spaltenwert aus der Muttertabelle, $sp1 ein aus den Referenztabellen generierte Variable bzw. Parameter  (<xsl:param name="p2"/>) ist. Das klappt soweit prima, wie ich ja bereits schrieb.

Bis auf diesen "Bug": Wenn die Werte ein "&" enthalten (z.B. "Plisch & Plum"), ist der eine Wert mit &amp; codiert (aus der Muttertabelle) und der andere wird einfach als "&" ausgegeben. Deshalb schlägt der count() an deser Stelle fehl bzw. gibt 0 zurück, weil die Vergleichswerte ja nicht "gleich" sind.

Der Wert in der Muttertabelle ist ein Lookup auf den Wert der Referenztabelle.

Hier stehe ich auf dem Schlauch. Warum gibt mir der Response die Werte unterschiedlich escaped aus? Wie kann ich das lösen? Ich kenne disable-output-escaping für ähnliche Fälle, aber das greift nur bei der Ausgabe von Text, ich müßte die beiden Werte aber schon serverseitig als Variablen/Parameter vergleichen, weil ich ja nur den count() ausgebe. Versuche, xPath anzuwenden z.B. mit "translate" sind fehlgeschlagen (Webpart wird nicht angezeigt).

Ideen? Ich raufe mir hier schon sämtliche Haare...

Danke + Grüße,

jasgo

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Jan. 2010 17:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich kann Dir zumindest sagen, warum das so ist: Du bekommst jeweils einen Wert (@Param) aus einem XML-Attribut und dort sind derartige Sonderzeichen nicht erlaubt und werden deshalb codiert. Den anderen Wert hast Du sonstwoher (aus Text oder als Parameter) und dort stören solche Zeichen nicht weiter und werden deshalb eben nicht codiert.

Lösung weiß ich allerdings auf die Schnelle keine - außer solche Zeichen eben zu meiden.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
126 Beiträge
JasGo Als Antwort am 21 Jan. 2010 17:16
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hm, ich bin nicht sicher, ob es das wirklich ist: wenn ich in "Datenquellenbibliothek" auf "Datenquellendetails" gehe, und mir die Werte ausgeben lasse, die in der verbundenen Quelle aus den jeweiligen Listen kommen (also alles XML), steht bei dem Muttertabellen-Attribut &amp; und bei Referenztabelle & drin. Das sind aus meiner Sicht zwei identische Arten von Daten, die da aus dem Query kommen. Oder?

jasgo

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 21 Jan. 2010 17:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Kann ich aus der Ferne nicht sagen. Das, was Du dort siehst, ist ja auch nur eine wie auch immer aufbereitete Ansicht ;-)

In jedem Fall sind Sonderzeichen in Attributwerten nicht erlaubt und werden deshalb codiert. "Normale" Feldwerte erhältst Du in Datenansichten immer als Attribute.

Viele Grüße
Andi
af @ evocom de
Blog