2016-05-17 3 views
0

In WSO2 esb 4.9.0 I definiert Vermittler nächsten Xslt:Probleme Verstand XSLT-Prozessor in WSO2

<localEntry key="TestXslt"> 
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">    
     <xsl:param name="param1"> 
      <FileList> 
       <File Name="b" automated="false" valid="true"/> 
       <File Name="c" automated="false" valid="true"/> 
       <File Name="d" automated="false" valid="true"/> 
       <File Name="e" automated="false" valid="true"/> 
       <File Name="f" automated="false" valid="true"/> 
      </FileList> 
     </xsl:param> 
     <xsl:output indent="yes"/> 
     <xsl:template match="/"> 
       <xsl:for-each select="$param1/FileList/File"> 
        <qq>TEST</qq> 
       </xsl:for-each> 
     </xsl:template> 
    </xsl:stylesheet> 
    <description/> 
</localEntry> 

Diese Xslt shoul 5 XML-Tags nur erstellen. Erwartete Ausgabe:

<qq>TEST</qq> 
<qq>TEST</qq> 
<qq>TEST</qq> 
<qq>TEST</qq> 
<qq>TEST</qq> 

Aber wenn ich diesen xslt mediator aufrufen, ist meine Nachricht leer. Was ich falsch machen kann. Vielleicht sollte ich XSLT 2.0 aktivieren. Wie kann ich es tun?

+1

Gibt es vielleicht irgendeine Standard-Namespace-Deklaration (zum Beispiel 'xmlns = "http://example.com"') in ihrem Umfang von den Vorfahren des 'localEntry' Elements? Fügen Sie in diesem Fall '' oder mindestens ' '. –

+0

@MartinHonnen Danke, das hilft, aber was soll ich tun, wenn mein param xmlns, z. In diesem Fall funktioniert select = "$ param1/FileList/File" nicht wieder –

+1

Dann müssen Sie Verwenden Sie ''. –

Antwort

1

In WSO2 wird der Parameter, den Sie mit xslt mediator an Ihren TestXslt übergeben, zu einer Zeichenfolge.

Warum können Sie nicht mit der aktuellen Payload-Nachricht arbeiten, was versuchen Sie zu tun?

Wenn Sie die XML-Payload der aktuellen Nachricht + eine andere XML-Quelle (z. B. aus der Registrierung) in Ihrem xsl benötigen, können Sie dieses XML-Fragment in der aktuellen Nachricht vor dem Aufruf von xslt mediator hinzufügen. Verwenden enrich Vermittler exemple:

<enrich> 
    <source clone="true" xpath="get-property('some_external_xml')"/> 
    <target type="body" action="child"/> 
</enrich>