PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XSL auf attribute mit Javascript-anweisungen parsen


clodetta
19.02.2010, 10:50
Hallihallo, nach laaanger Zeit muß ich mich hier doch auch mal wieder melden... ;)
und gleich mal eine frage loswerden...:

und zwar liegen mir xsl-dateien vor, die ich via C# parse. das klappert soweit auch ganz gut.
nun sind darin aber ganz viele tags, die über irgendwelche onClick- und onBlur-Attribute und so fort verfügen, in denen irgendwelche obsoleten Javascript-funktionen aufgerufen werden. naja, und da sie eben obsolet sind, will ich die aus dem xsl rausschmeissen.
die tags sehen so oder so ähnlich aus:

<input type="submit" class="ButtonMitBGColor" value="Einzahlung(en) löschen"
name="ACTION" onClick="javascript: return checkCheckbox();" />
als ergebnis soll dann rumkommen:

<input type="submit" class="ButtonMitBGColor" value="Einzahlung(en) löschen"
name="ACTION" onClick="" />
dazu verwende ich folgende regex mit positivem lookbehind am ende:

"javascript:(?=.*[0-9a-zA-Z])(?=.*[',.;])(?=.*[^/])(?=.*[^>])(?=.*[^<]).*(?<=[ ])
das funkt auch soweit....

nur, jetz kann´s aber vorkommen, daß mehrere eventproperties im tag enthalten sind, so zB:

<a title="Vorderseite" href="#" onMouseover="javascript:return HideLink();"
onClick="javascript: setTableDisplay('FrontSide','BackSide');">
und da versagt meine regex
aber irschendwie total und liefert mir

<a title="Vorderseite" href="#" onMouseover=""
setTableDisplay('FrontSide','BackSide');">
das is jetz latürnich nid so schön:(
kann mir jemand sagen wie ich sowohl onmouseover als auch onClick einfach leer stehen lasse?
also,

<a title="Vorderseite" href="#" onMouseover="" onClick="">
ich steh´ grad so n bissi aufm schlauch...
vielen dank schonmal,
die clodetta


Jack
19.02.2010, 12:32
Mhm, Deine Regex versteh ich leider nicht so ganz. Ich hätte eher sowas hier erwartet:

javascript:.*?(?<=\")

Mir scheint, Du hast ein Problem mit greedy: .* ist normalerweise immer gierig. Ein Fragezeichen dahinter läßt es genügsam werden ;)

clodetta
19.02.2010, 12:52
Hi, Jack.
Vielen Dank für Deine Antwort.
Das sieht richtig gut aus.
ja, greedy war hier wohl das problem;
bin noch nid so fit in regex, aber soviel steht fest:
ich will mehr davon...!!!
;)
:)
danke nochmal!!

Jack
19.02.2010, 13:00
Np. Eines noch, weil ichs grad sehe, ich glaube, den Lookahead müßtest Du Dir auch sparen können:


javascript:[^\"]*

matched auf alles außer Anführungszeichen, mit dem die Attribute in nem XML Dokument immer abgeschlossen werden müssen. Dann ist auch das greedy kein Problem mehr.

Firefall
19.02.2010, 13:01
Wenn's dir nur ums löschen geht und das nicht ein fixer Teil des Programmablaufs ist, kannst du diese AUgabe auch leicht mit XML Editoren wie z.B. dem Altova XML Spy machen. Wesentlich bequemer.

clodetta
19.02.2010, 13:25
Hi, Firefall.
Doch, das ist ein fester Bestandteil, denn ich möchte nach dem entfernen der js-dinger gerne den xsl-source in validen asp-source umwandeln; es folgt also noch weiterer Code, mit dem Löschen allein ist´s nicht getan ;)
Den XML Spy schau ich mir mal an, danke für den tip; hier auf der Arbeit hab ich mir jetz allerdings erstmal den Rad Software Regex Designer installiert, der is auch nid schlecht...
Liebe Grüsse,
die clodetta

clodetta
19.02.2010, 13:27
Jack,
you made my day!!! :)
Funktioniert super!!!
Vielen Dank!