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