Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[XSL FO] concat / encoding probleempje...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi allen,

Ik heb een probleempje met het weergeven van wat speciale karakters in een PDF.

Ik heb de volgende situatie...
In de XML staan dubbel ge-escapete karakters.
ë (is karakter ë) wordt in de XML als volgt weergegeven: ë

Als ik ditin de PDF weergeef krijg ik: ë te zien... logisch. Echter, ik wil dit in de PDF als een ë weergeven.

Wat ik doe is het volgende:
Eerst sloop ik de &# (&#) eraf, dan de ; (;) dan houd ik dus 235 over. Dat wil ik dan concateneren met een normale &# en een ;

De code is als volgt:
XML:
1
2
3
    <xsl:variable name="char" select="substring-after($html, '&#')" />
    <xsl:variable name="charNumber" select="substring-before($char, ';')" />
    <xsl:value-of select="concat('&#',$charNumber,';')" />


Ik krijg daarna echter een SAXParseException : "Illegal decimal character reference.".

Ik weet dat het aan de concat ligt want als ik gewoon een value-of select="$charNumber" doe dan krijg ik netjes het getal in de pdf te zien.
Heeft iemand een idee wat er niet goed is aan deze concat of wat ik moet doen om het wel te laten werken?

PS.
XSL document start met:
<?xml version="1.0" encoding="UTF-8"?>

en de output is:
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

[ Voor 0% gewijzigd door Verwijderd op 04-07-2008 09:46 . Reden: foutmelding aangepast... ]


  • foliant
  • Registratie: Juli 2007
  • Laatst online: 19-01-2022
Speciaal hiervoor heeft men in versie 2.0 van xslt character maps bedacht.
Voorbeeld:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="2.0">

  <xsl:output method="xml" encoding="UTF-8" use-character-maps="cm1"/>

  <xsl:character-map name="cm1">
    <xsl:output-character character="ë" string="&amp;#235;"/>  <!-- ë --> 
    <xsl:output-character character="é" string="&amp;#233;"/> <!-- é -->
  </xsl:character-map>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>


In de character-map moet staan:
character="&#235;" string="&amp;#235;"
character="&#233;" string="&amp;#233;"


Ik hoop dat je een week hebt kunnen wachten op een antwoord ;)

[ Voor 8% gewijzigd door foliant op 11-07-2008 10:25 . Reden: &amp#235; wordt door het forum automatisch omgezet naar ë ]


Verwijderd

Topicstarter
Ja kon wel een week wachten... nog wel langer bleek achteraf :)

Kom er later op terug, dank voor de input alvast!!!