Avatar billede f2f4 Novice
26. august 2003 - 17:06 Der er 9 kommentarer og
1 løsning

XSLT, JavaScript, #10; problem

Jeg håber spørgsmålet er placeres i den rigtige kategori!

Jeh har en XSL transformation der danner en html fil med bl.a. noget sciptkode.

Uddrag fra xsl-fil:
<xsl:attribute name="onClick">openHlpWindow('','', '<xsl:value-of select="."/>', '<xsl:value-of select="help"/>');return false;</xsl:attribute>

Dette bliver så ex. transformeret til følgende html kode:
<A class=ingen
  onclick="openHlpWindow('','', 'Har du indsendt virksomhedsskema på edb-medium?', 'Hvis du har indsendt virksomhedsskema S569, skal du vælge Ja i feltet her.&#10;');return false;" href="java script:void()">

Dette giver så en 'unterminated string constant' fejl under visningen hvilket skyldes tegnet &#10; (linieskift)

Jeg formoder det ikke må være en del af parameteren til JavaScript kaldet - men hvordan kan man undgå dette?
(jeg kan ikke fjerne alle 'linie skift' fra data/xml filen!!)

Jeg har prøvet forskellige indstillinger af xsl:output method og encoding i xsl filen, men uden held. Kan man måske indlæse tekstværdien i en variabel i xsl'en og så sende den men som parameter?

Tak hvis nogle kan hjælpe!
Avatar billede janegil Nybegynder
27. august 2003 - 08:42 #1
Altså, du får ut en &#10; som du ikke selv har kodet, den kommer som en følge av linjeskift inne i help-elementet ditt? I så fall skulle det ikke være nødvendig å fjerne ALLE linjeskift fra XML-kilden, bare de som er inne i help-elementene.

Se http://www.w3.org/TR/xpath#function-normalize-space, og prøv

select=" normalize-space(help)"
Avatar billede atoft Nybegynder
27. august 2003 - 08:53 #2
Har du prøvet med
indent = "no" i xsl:output

<xsl:output method="html" version="1.0" encoding="UTF-8" indent="no "/>
Avatar billede f2f4 Novice
27. august 2003 - 11:02 #3
atoft: Virker umiddelbart ikke!
Dit forslag resultere i en masse fejl, siden kommer ikke engang frem. Det er en Servlet der udfører arbejdet og det er selvt servletten der fejler men en masse fejl!

<xsl:output method="html" omit-xml-declaration="yes" indent="no" encoding="UTF-8" />
- giver min oprindelige fejl

<xsl:output method="xml" omit-xml-declaration="yes" indent="no" encoding="UTF-8" />
- giver min oprindelige fejl

<xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
- giver min oprindelige fejl
Avatar billede f2f4 Novice
27. august 2003 - 11:04 #4
jangil: Ja du har ret i dit spørgsmål og din konklusion, jeg går nu igang med at se på dit link
Avatar billede f2f4 Novice
27. august 2003 - 11:56 #5
janegil: Lader ikke til at virke &#10; er der stadig og giver problemer
Avatar billede janegil Nybegynder
27. august 2003 - 12:06 #6
...hmm, jeg har en gang opplevd å måtte fjerne linjeskift og innrykk fra en XSLT-fil for å få den output jeg ville ha.

Har du noe whitespace du kan fjerne fra xsl:attribute-elementet i XSLT-filen?

Evt. flytte mere av javascriptkoden ut av attributtet, og over til et SCRIPT-element i HEAD?
Avatar billede f2f4 Novice
27. august 2003 - 12:28 #7
janegil:
Jeg prøver ... men det flytter vel bare problematikken til et ny JavaScript funktionskald.

Jeg forståe ikke helt hvad du mener med at fjerne linieskift fra XSLT-filen!? Jeg kan vel ikke fjerne noget fra nedenstående linie i XSL-filen!?:
<xsl:attribute name="onClick">openHlpWindow('','', '<xsl:value-of select="."/>', '<xsl:value-of select="normalize-space(help)"/>');return false;</xsl:attribute>

.. har også prøvet med:
<xsl:attribute name="onClick">openHlpWindow('','', '<xsl:value-of select="."/>', normalize-space(<xsl:value-of select="help"/>));return false;</xsl:attribute>

.. men det giver nok ingen mening.

Jeg vil ikke til at skulle fjerne linieskift i XML filen. I XML filen har jeg et (langt) tag men en hjælpetekst, og i henne hjælpetekst er eventuelle linieskift jo helt ok hvis man ex. laver afsnit i sin hjælpetekst.
Avatar billede janegil Nybegynder
27. august 2003 - 13:03 #8
Nei, det ser ikke ut til at du har noe å fjerne fra XSLT.

Men du kan ikke ha linjeskift inne i en javascript tekst. Dvs., du skal kode med \n i stedet for det tegnet som svarer til entiteten &#10; .
Avatar billede janegil Nybegynder
27. august 2003 - 13:12 #9
"To linjer\n" +
"i javascript kode og output"

der plussen lar deg bruke flere linjer i koden,
mens \n gir deg flere linjer i output.
Avatar billede f2f4 Novice
15. september 2003 - 11:45 #10
janegil: Undskyld det sene svar. Du hjalp mig på rette vej ... det endte med at jeg rettede Servletten så den retunerede '<br/>' i stedet for &#10; eller \n
og det virker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester