2016-05-17 2 views
0

В WSO2 ESB 4.9.0 я определил следующий: посредник XSLTПроблемы остроумие XSLT процессор 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> 

Это просто Шоул XSLT создать 5 тегов XML. Ожидаемый результат:

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

Но когда я называю это посредником xslt, мое сообщение пуст. Что я могу сделать неправильно. Может быть, я должен активировать XSLT 2.0. Как мне это сделать?

+1

Есть ли возможно любое объявление пространства имен по умолчанию (например, 'XMLNS =«http://example.com»') в объеме от предков 'localEntry' элемента? В этом случае добавьте '' или по крайней мере ' '. –

+0

@MartinHonnen Спасибо, что помогает, но что мне делать, если мой параметр требует xmlns, например. В этом случае select = "$ param1/FileList/File" не работает снова –

+1

Затем вам нужно используйте ''. –

ответ

1

Внутри WSO2 параметр, который вы передаете на свой TestXslt с помощью посредника xslt, становится строкой.

Почему вы не можете работать с текущим сообщением полезной нагрузки, что вы пытаетесь сделать?

Если вам нужна текущая информация XML-сообщения + другой источник XML (загруженный из реестра в качестве примера) в вашем xsl, вы можете добавить этот фрагмент xml в текущее сообщение перед вызовом посредника xslt. Использование обогащают посредник Exemple:

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