1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
866
866
EMPFEHLEN
-
26.01.12 14:57 #1
- Registriert seit
- Mar 2008
- Beiträge
- 147
Guten Tag,
vorweg: normalerweise beschäftige ich mich eher mich "offline"-Sprachen, wie C. Dem entsprechend habe ich auf dem Gebiet XML/XSL bisher recht wenig Erfahrung und habe ein Problem:
Soweit macht es das, was ich erhofft hatte: je nach filterLogicExt filtert er mir die Datensätze die @ABC <-> $filter in der jeweiligen Logik ermittelt.HTML-Code:<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[ ($filterLogicExt='contains' and contains(@ABC, $filter)) or ($filterLogicExt='startsWith' and starts-with(@ABC, $filter)) or ($filterLogicExt='exactly' and @ABC=$filter) or ($filterLogicExt='none') or ($filterLogicExt='') ]" />
Allerdings möchte ich @ABC nicht starr im Text haben, sondern dynamisch per xsl
aram ändern...
Ich habe leider keine Ahnung, wie ich das machen soll, denn wenn ich einfach @ABC durch $diesistmeinparam ersetze, so wird es wohl deshalb scheitern, dass er den Parameter als String ansieht und nicht in einen XPath auflöst. Vielleicht (sofern ich damit Recht habe) wäre daher meine Frage umzuformulieren: Wie kann ich einen String in ein XPath-Objekt konvertieren?
Ich hoffe, dass ihr mir helfen könnt.
Danke und Gruß,
kickerxy
#edit: Wahrscheinlich unwichtig, aber ich erwähne es mal: Ich verwende SharePoint Server2010 und den zugehörigen SPDesigner
#update:
scheint auch nicht zu funktionieren. Obwohl das Konstrukt - zumindest nach meiner Recherche - den String konvertieren sollte...HTML-Code:<xsl:variable name="XSL_FilterFieldNode" select="*[local-name() = $filterField_param]" /> //... ($filterLogicExt='contains' and contains($XSL_FilterFieldNode, $filter)) //...Geändert von kickerxy123 (26.01.12 um 16:11 Uhr) Grund: #edit, #update
hilfreiche Antwort? Es gibt einen Danke-Button ;)
Rettet das Internet!
-
26.01.12 17:39 #2
- Registriert seit
- Dec 2011
- Beiträge
- 30
@ABC selektiert ein Attribute namens "ABC", so du dabei den Attributnamen in einem Parameter haben willst, bleibt dir nur
Das sollte reichen, so es nur um Attributnamen geht, bei Elementnamen kann man dann analog contains(*[local-name() = $el-name], $filter) nehmen.Code :1 2 3 4 5 6 7 8 9 10
<xsl:param name="att-name" select="'ABC'"/> <xsl:template match="foo"> ... <xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[ ($filterLogicExt='contains' and contains(@*[local-name() = $att-name], $filter)) .../> ... </xsl:template>
Vollständige XPath-Pfadausdrücke in einem Parameter zu haben und dann dynamisch zu evaluieren erfordert einen XSLT-Prozessor, der das als Erweiterung anbietet.
-
27.01.12 10:46 #3
- Registriert seit
- Mar 2008
- Beiträge
- 147
Hallo Martin,
es ging mir um Attributnamen. Deine Lösung in dem CODE-Bereich ist genau das, was ich gesucht habe. Funktioniert super - vielen Dank!
Gruß,
kickerxyhilfreiche Antwort? Es gibt einen Danke-Button ;)
Rettet das Internet!





Zitieren
Login





