Barcode-Funktionen
Der XSLT-Prozessor verwendet zur Erstellung von Barcodes Java-Bibliotheken von Drittanbietern. Im Folgenden finden Sie die verwendeten Klassen und öffentlichen Methoden. Die Klassen befinden sich im Paket AltovaBarcodeExtension.jar, das im Ordner <ProgramFilesFolder>\Altova\Common2025\jar gespeichert ist.
Die verwendeten Java-Bibliotheken befinden sich in Unterordnern des Ordners <ProgramFilesFolder>\Altova\Common2025\jar:
•barcode4j\barcode4j.jar (Website: http://barcode4j.sourceforge.net/)
•zxing\core.jar (Website: http://code.google.com/p/zxing/)
Die Lizenzdateien befinden sich ebenfalls in den entsprechenden Ordnern.
Java Virtual Machine
Um die Barcode-Funktionen verwenden zu können, muss auf Ihrem Rechner eine Java Virtual Machine zur Verfügung stehen und mit der Bit-Version der Altova-Applikation übereinstimmen (32-Bit oder 64-Bit). Der Pfad zu dieser Machine wird, wie unten angeführt, gefunden.
•Wenn Sie ein Altova Desktop-Produkt verwenden, versucht die Altova-Applikation, den Pfad zur Java Virtual Machine automatisch zu ermitteln. Dazu wird zuerst (i) die Windows Registry und dann (ii) die JAVA_HOME-Umgebungsvariable gelesen. Sie können im Dialogfeld "Optionen" der Applikation auch einen benutzerdefinierten Pfad hinzufügen. Dieser Eintrag hat Vorrang vor allen anderen automatisch ermittelten Java VM-Pfaden.
•Wenn Sie ein Altova Server-Produkt auf einem Windows-Rechner ausführen, wird der Pfad zur Java Virtual Machine zuerst aus der Windows Registry ausgelesen. Falls dies nicht gelingt, wird die JAVA_HOME-Umgebungsvariable verwendet.
•Wenn Sie ein Altova Server-Produkt auf einem Linux- oder macOS-Rechner ausführen, sollten Sie sicherstellen, dass die JAVA_HOME-Umgebungsvariable ordnungsgemäß definiert ist und dass sich die Java Virtual Machine-Bibliothek (unter Windows die Datei jvm.dll) entweder im Verzeichnis \bin\server oder \bin\client befindet.
XSLT-Beispiel zum Generieren von Barcode
Im Folgenden finden Sie ein XSLT-Beispiel, in dem gezeigt wird, wie Barcode-Funktionen in einem XSLT-Stylesheet verwendet werden.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:altova="https://www.altova.com"
xmlns:altovaext=”http://www.altova.com/xslt-extensions”
xmlns:altovaext-barcode="java:com.altova.extensions.barcode.BarcodeWrapper"
xmlns:altovaext-barcode-property="java:com.altova.extensions.barcode.BarcodePropertyWrapper">
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html>
<head><title/></head>
<body>
<img alt="barcode" src="data:image/png;base64"/>
</body>
</html>
<xsl:result-document
href="barcode.png"
method="text" encoding="base64tobinary" >
<xsl:variable name="barcodeObject"
select="altovaext-barcode:newInstance('Code39',string('some value'),
96,0, (altovaext-barcode-property:new( 'setModuleWidth', 25.4 div 96 * 2 ) ) )"/>
<xsl:value-of select="xs:base64Binary(xs:hexBinary(string(altovaext-barcode:generateBarcodePngAsHexString($barcodeObject)) ))"/>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
XQuery-Beispiel zum Generieren eines QR-Codes
Im Folgenden finden Sie ein XQuery-Beispiel, in dem gezeigt wird, wie Sie mit Hilfe von Barcode-Funktionen ein QR-Code-Bild generieren können.
declare variable $lines := unparsed-text-lines('https://info.healthministry.gv.at/data/timeline-cases-provinces.csv', 'utf-8');
declare variable $main := map:merge(tokenize(head($lines), ';')!map{.:position()});
declare variable $data := map:merge(tail($lines)!array{tokenize(., ';')}!map{?($main?Name): [?($main?Date), xs:integer(?($main?ConfirmedCasesProvinces)) - xs:integer(?($main?Recovered))]}, map{'duplicates':'combine'});
declare variable $chart_img := altovaext:chart(map{'width': 1900, 'height': 600}, map:for-each($data, function($k, $v){[$k, $v?1!substring-before(., 'T'), $v?2][$k != 'Austria']}));
<img src="data:image/png;base64,{$chart_img}"/>
(:$main, $data,:)
Das Paket com.altova.extensions.barcode
Das Paket com.altova.extensions.barcode wird zum Generieren der meisten der Barcode-Typen verwendet.
Die folgenden Klassen werden verwendet:
public class BarcodeWrapper
static BarcodeWrapper newInstance( String name, String msg, int dpi, int orientation, BarcodePropertyWrapper[] arrProperties )
double getHeightPlusQuiet()
double getWidthPlusQuiet()
org.w3c.dom.Document generateBarcodeSVG()
byte[] generateBarcodePNG()
String generateBarcodePngAsHexString()
public class BarcodePropertyWrapper Dient zum Speichern der Barcode-Eigenschaften, die zu einem späteren Zeitpunkt dynamisch definiert werden
BarcodePropertyWrapper( String methodName, String propertyValue )
BarcodePropertyWrapper( String methodName, Integer propertyValue )
BarcodePropertyWrapper( String methodName, Double propertyValue )
BarcodePropertyWrapper( String methodName, Boolean propertyValue )
BarcodePropertyWrapper( String methodName, Character propertyValue )
String getMethodName()
Object getPropertyValue()
public class AltovaBarcodeClassResolver Registriert die Klasse com.altova.extensions.barcode.proxy.zxing.QRCodeBean zusätzlich zu den vom org.krysalis.barcode4j.DefaultBarcodeClassResolver registrierten Klassen für die qrcode Bean.
Das Paket com.altova.extensions.barcode.proxy.zxing
Das Paket com.altova.extensions.barcode.proxy.zxing wird zum Generieren des QRCode Barcodetyps verwendet.
Die folgenden Klassen werden verwendet:
Klasse QRCodeBean
•Erweitert org.krysalis.barcode4j.impl.AbstractBarcodeBean
•Erstellt ein AbstractBarcodeBean Interface für com.google.zxing.qrcode.encoder
void generateBarcode(CanvasProvider canvasImp, String msg)
void setQRErrorCorrectionLevel(QRCodeErrorCorrectionLevel level)
BarcodeDimension calcDimensions(String msg)
double getVerticalQuietZone()
double getBarWidth()
Klasse QRCodeErrorCorrectionLevel Fehlerkorrekturebene für den QRCode
static QRCodeErrorCorrectionLevel byName(String name)
“L” = ~7% correction
“M” = ~15% correction
“H” = ~25% correction
“Q” = ~30% correction