XSL:FO - ≥ verwenden
Andreas Bock
- xsl
0 Kerstin0 Andreas0 Gunnar Bittersmann0 Andreas0 Andreas0 Thomas J.S.
Hallo,
ich versuche verzweifelt, in meinem FO-mapping das ≥ anzuzeigen, aber ich bekomme immer die Fehlermeldung
org.apache.fop.apps.FOPException: The entity "ge" was referenced, but not declared.
Kann mir jemand helfen? Wo muss ich ge definieren, damit es funktioniert?
Danke im Voraus,
Andreas
Hallo,
da es bei mir ebenso mal vorkam, dass statt ü oder ö dieses ü oder eben ö vorkam, musste ich dies als Entity im Kopf meiner XML-Datei schreiben:
<!DOCTYPE article [
<!ENTITY bdquo "" >
<!ENTITY quot "" >
<!ENTITY uuml "ü" >
<!ENTITY auml "ä" >
<!ENTITY ouml "ö" >
<!ENTITY Uuml "Ü" >
<!ENTITY Auml "Ä" >
<!ENTITY Ouml "Ö" >
<!ENTITY szlig "ß" >
<!ENTITY nbsp " " >
<!ENTITY lt "" >
<!ENTITY gt "" >
]>
Dann klappte es auch mit der Transformation.
Gruß,
Kerstin
Danke für die schnelle Antwort, hat leider nicht geklappt :-(
Mein XSL-File sieht am Kopf jetzt so aus:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY ge "≥" >
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:sdf="java.text.SimpleDateFormat" xmlns:date="java.util.Date" exclude-result-prefixes="xsl sdf date">
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
fo:layout-master-set
<fo:simple-page-master marg usw usw usw
Bekomme aber immer noch die gleiche Fehlermeldung...
Hello out there!
Bekomme aber immer noch die gleiche Fehlermeldung...
Verwendest du in dem zu transformierenden XML auch die Entity-Referenz '≥' ohne 'gt' deklariert zu haben?
Vielleicht ließt es auch am XSLT-Prozessor, der im Stylesheet deklarierte Entities nicht referenzieren kann?
Warum verwendest du nicht das Zeichen '≥' oder die NCR '≥'* im Quelltext?
See ya up the road,
Gunnar
* https://forum.selfhtml.org/?t=136043&m=883218
Warum verwendest du nicht das Zeichen '≥' oder die NCR '≥'* im Quelltext?
Habe in meinem Quelltext jetzt das NCR drin:
<Data>
...
...
<LOOKUP_KREDITART>
<KREDITART_TEXT>Langfristfinanzierung ≥ 5 Jahre</KREDITART_TEXT>
</LOOKUP_KREDITART>
...
...
</Data>
Die zugehörige xsl-Zeile:
<xsl:value-of select="/Data/LOOKUP_KREDITART[KREDITART_ID = $CURRENT/KREDITART_ID]/KREDITART_TEXT"/>
Nutze ich die xsl-Zeile wie beschrieben, erhalte ich als Ergebnis
Langfristfinanzierung ≥ 5 Jahre
Was ich auch schon getestet habe:
<xsl:value-of select="/Data/LOOKUP_KREDITART[KREDITART_ID = $CURRENT/KREDITART_ID]/KREDITART_TEXT" disable-output-escaping="yes"/>
Ergebnis dann:
Langfristfinanzierung # 5 Jahre
Deswegen kam ich auf die Idee mit dem > Hat aber nicht funktioniert...
Was ich auch schon getestet habe:
<xsl:value-of select="/Data/LOOKUP_KREDITART[KREDITART_ID = $CURRENT/KREDITART_ID]/KREDITART_TEXT" disable-output-escaping="yes"/>Ergebnis dann:
Langfristfinanzierung # 5 Jahre
Das '#' hat mich auf eine Idee gebracht - vielleicht macht er es ja richtig, nur die entsprechende Schriftart um das Zeichen anzuzeigen fehlt?
Arial Unicode MS als Schriftart dem fop bekannt gemacht, die Zeile folgendermaßen geschrieben:
<fo:block font-size="9pt" font-family="Arial Unicode MS">
<xsl:value-of select="/Data/LOOKUP_KREDITART[KREDITART_ID = $CURRENT/KREDITART_ID]/KREDITART_TEXT" disable-output-escaping="yes"/>
</fo:block>
BINGO! Hat geklappt!
Danke für die Hilfe trotz allem!
Hallo,
Warum verwendest du nicht das Zeichen '≥' oder die NCR '≥'* im Quelltext?
Habe in meinem Quelltext jetzt das NCR drin:
<KREDITART_TEXT>Langfristfinanzierung ≥ 5 Jahre</KREDITART_TEXT>
Nutze ich die xsl-Zeile wie beschrieben, erhalte ich als Ergebnis
Langfristfinanzierung ≥ 5 Jahre
Es sieht so aus, als ob die Schrift die FOP verwendet nicht über das Zeichen verfügt. Damit hast du jetzt ein echtes Problem, denn wenn du für die Ausgabe ein font-family="Symbol" verwenden würdest, würde es mit: ≥ oder ≥ oder ≥ klappen. Nur wird leider der normaler Text dabei "verunstaltet".
Was du versuchen kannst ist das Auseinaderpflücken des Textes:
<xsl:value-of select="substring-before(., '≥')" />
<fo:inline font-family="Symbol"> ≥ </fo:inline>
<xsl:value-of select="substring-after(., '≥')" />
Grüße
Thomas