Avatar billede sagdjb Nybegynder
28. juni 2002 - 13:13 Der er 6 kommentarer og
1 løsning

Undgå konvertering

Hejsa,

Jeg sidder lige lidt fast i et problem, som egentligt burde være simpelt. Jeg er ved at sætte CDATA sections rundt om alle tekst noderne, da disse kan indeholde unicodes (som ’). Jeg ønsker imidlertidigt IKKE disse værdier ændret til en karakter (hvilket sker).

Hvis mit XML ser ud som følger:
<root>her er data &#8217; og mere &#8217;</root>

Og stylesheetet som virker:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:strip-space elements="*"/>
   
    <xsl:template match="*">
        <xsl:copy>
            <xsl:copy-of select="@*"/>
            <xsl:apply-templates />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="text()">
        <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
        <xsl:value-of select="."/>
        <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

Bliver outputtet (hvilket er forkert):
<root><![CDATA[her er data ' og mere ']]></root>

ønsket output skulle gerne være:
<root><![CDATA[her er data &#8217; og mere &#8217;]]></root>

Please hjælp!!


Jacob
Avatar billede Slettet bruger
28. juni 2002 - 16:05 #1
Mangler du ikke bare at sætte "disable-output-escaping" på selve teksten også?
Altså:
<xsl:template match="text()">
  <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
      <xsl:value-of select="." disable-output-escaping="yes" />
  <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
</xsl:template>

/CS
Avatar billede sagdjb Nybegynder
28. juni 2002 - 16:21 #2
Nej det virker heller ikke, og der undre jeg mig egentligt også over!?"
Avatar billede sn0wflake Nybegynder
28. juni 2002 - 16:35 #3
Virker den i Mozilla? Hvis ja, hvordan?
Avatar billede sagdjb Nybegynder
01. juli 2002 - 09:26 #4
Jeg har prøvet den med på xalan, saxon og msxml parserene... Jeg ved ikke hvad der benyttes af mozilla, men dette er et konkret stylesheet spørgsmål.
Avatar billede Slettet bruger
01. juli 2002 - 11:08 #5
Aaaah - problemet er at en XML parsers job er at læse filen, konvertere entities m.m. - dvs. når XML filen forlader parseren ER disse entities allerede blevet oversat - stylesheet'et ser aldrig andet en det ene tegn som entity'en beskriver. Surt...

Hvis du loader XML filen vha. ServerXMLHTTP, vil du i .responseXML property'en se de oversatte tegn, men i .responseText bør du kunne se de faktiske tegn (dvs. &, #, 8, 2, 1, 7).

/CS
Avatar billede sagdjb Nybegynder
02. juli 2002 - 12:05 #6
Det burde kunne lade sig gøre, f.eks. ved at slå resolve entities fra i parseren. Desværre er det ikke muligt at lave en serverXMLHTTP i løsningen, men jeg tester lige om det er det der er problemet. Så stylesheetet egenligt udføre det rigtige på det forkert input!!
Avatar billede Slettet bruger
02. juli 2002 - 13:16 #7
Det er ihvertfald ikke nok at slå "validateOnParse" fra, da det også er "for sent" i processen.

/CS
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