Kod JS z parametrem z XML w skrypcie XSLT

0

Nieco zakręcony temat, ale sprawa ma się tak.

Przetwarzam spoooory plik XML za pomocą XSLT aby stworzyć z niego SQL i wessać do bazy. Kilka pól zakodowanych jest base64 i chciałbym, aby w wynikowych zapytaniach dane były odkodowane.

Samym XSLT nie da się tego odkodować [to nic, że sam XML ma typ danych base64].

Wrzuciłem link do odpowiedniego skryptu w JavaScript i napisałem taką linijkę w pliku XSLT.

<script>document.write(decodeBase64('<xsl:value-of select="@autor" />'))</script>

Jednak IE zwraca błąd "brak zakończenia stałej znakowej" natomiast FF wpada w dziwną pętlę bez końca i zwraca błąd w konsoli "brak pamięci" albo "Błąd: decodeBase64 is not defined" wypisawszy prawidłowo jeden z rekordów [więc jednak skorzystał z tej funkcji]

Jak to powinno prawidłowo wyglądać? Od razu mówię, że może to działać tylko pod jedną przeglądarką, gdyż to jest moje narzędzie i po wygenerowaniu dobrego SQL pójdzie w zapomnienie.

A może inny sposób na zdekodowanie danych zapisanych jako base64?

Muszę to rozwiązać w sumie do końca niedzieli - za opóźnienie zbiorę lanie przez kolano od szefa ;P

0
Marooned napisał(a)

Jednak IE zwraca błąd "brak zakończenia stałej znakowej"

ten blad pojawia sie zwykle kiedy string zawiera znaki konca wiersza, na pewno usunales wszystkie \r \n i dodales slashe ?

0

yy, nie.. \r\n są..

Text do odkodowanie to base64 więc wygląda tak:

wstep="SURDIChJbnRlcm5hdGlvbmFsIERhdGEgQ29ycG9yYXRpb24pIG9wdWJsaWtvd2GzYSByYXBvcnQg
bmEgdGVtYXQgcG9sc2tpZWdvIHJ5bmt1IHN5c3RlbfN3IE1SUElJL0VSUC4gUHJ6eWNob2R5IG9m
ZXJlbnTzd3RlZ28gcm9kemFqdSByb3p3abF6YfEgdyAxOTk5IHJva3Ugd3luaW9zs3kgb2suIDxi
PjIxMyBtbG4gerMuPC9CPjxicj4NCklEQyBwcnpld2lkdWplLCC/ZSB3IGNpsWd1IG5hamJsab9z
enljaCBwaepjaXUgbGF0IHBvbHNraSByeW5layBzeXN0ZW3zdyBNUlBJSS9FUlAgYupkemllIHLz
c7MgbyBvay4gPGI+MTklPC9iPiByb2N6bmllLg=="

muszę obadać, co będzie, jak wywalę \r\n


Jeeeeee! THX! Co prawda firefox nadal wpada w nieskończoną pętlę :/ ale na IE śmiga to wyśmienicie! :)

Dzięki wielkie!

__--
Jak wiesz co jest nie tak na FF to dla mojego spokojnego sumienia możesz napisać :) Na pewno document.write pisze po zamknięciu dokumentu, dlatego treść jest usuwana i widzę pierwszy zdekodowany napis - a czemu potem zwiecha? (tzn. strona ładuje się w nieskończoność) - może dlatego, że nadpisanie strony wywala podłączenie skryptu w JS a FF nie trzyma go w pamięci? Dlatego wypisuje info, że nie ma takiej funkcji.. ino czemu ładuuuuje..


OK, rozwiązałem problem i na FF :) Zamieniłem document.write na takie coś: <xsl:attribute name="id"> a<xsl:value-of select="position()" /> </xsl:attribute> <script>document.getElementById('a<xsl:value-of select="position()" />').innerHTML = decodeBase64('<xsl:value-of select="@autor" />')</script>

Pozostaje mi poprawienie kodowania, bo w zwracanym ciągu zawsze krzaki, obojętnie jakie kodowanie.. :/

W sumie, to problem rozwiązany :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1