Einzelnen Beitrag anzeigen

creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
233 Beiträge
 
Delphi 10.4 Sydney
 
#1

Parameterübergabe an XSL

  Alt 22. Jun 2017, 05:53
Moin Moin!

Delphi-Quellcode:
.....

XSLTStyleSheet := CoFreeThreadedDOMDocument.Create;
XSLTStyleSheet.async := false;
XSLTStyleSheet.load(XSLFile);
XSLTTemplate := CoXSLTemplate.Create;
XSLTTemplate.stylesheet := XSLTStyleSheet;
XSLProcessor := XSLTTemplate.createProcessor;
XSLProcessor.input := XMLFile;
XSLProcessor.addParameter('BPANR_Feld',Suchfeld);
XSLProcessor.addParameter('BPANR_Wert',Suchwert);
XSLProcessor.transform;

......
Code:
[SIZE="10"]<?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:param name="BPANR_Feld"/>
<xsl:param name="BPANR_Wert"/>   
<xsl:template match="/">
<KDR>
<xsl:for-each select="KDR/Kunde">
   <xsl:sort select="Nachname"/>
   <xsl:if test="starts-with($BPANR_Feld,$BPANR_Wert)">
      <Kunde>
          <BPANR><xsl:value-of select="BPANR"/></BPANR>
      <Anrede><xsl:value-of select="concat(Vorname,', ', Nachname)"/></Anrede>
      <!-- weitere Felder -->
      </Kunde>
      </xsl:if>
   </xsl:for-each>
</KDR>
</xsl:template>
</xsl:stylesheet>[/SIZE]
Oben der Programmcode, darunter die XSL. Die Übergabe der Parameter klappt problemlos, allerdings bekomme ich keine Fehlermeldung aber auch kein Ergebnis.
Und zwar genau solange, bis ich

Code:
   <xsl:if test="starts-with($BPANR_Feld,$BPANR_Wert)">
in
Code:
   <xsl:if test="starts-with(BPANR,$BPANR_Wert)">
ändere, also den Parameter durch das zu verwendende Feld direkt ersetze.

In W3 und auch bei Microsoft wird die Funktion starts-with(string,string) definiert. String.

Was geht da nicht? Muss ich aus dem Parameter erst noch ein - ja, was machen? Und wie?


creehawk
  Mit Zitat antworten Zitat