需要一个Mapping节点时,XMLTansformation节点通常是一个不错的选择,它可以使用XSLT将输入的XML转变成另一种形式的 XML,其开发速度高于在Compute节点中书写ESQL和在JavaCompute节点中书写Java代码,其缺陷在于缺乏访问外部数据的手段,有时 还需要上述两种节点的帮助。
XMLTransformation节点在Transformation选择项下,需要指定XSL文件的位置,可以通过其StylesheetName和StyleSheetDirectory来指定。以下是一个转换的例子:
输入:
<employees><employee id="001">Andy</employee><employee id="002">Bill</employee><employee id="034">Cindy</employee></employees>
转换XSL:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<users>
<xsl:for-each select="employees/employee">
<user>
<sn><xsl:value-of select="position()"/></sn>
<id><xsl:value-of select="@id"/></id>
<name><xsl:value-of select="text()"/></name>
<pswd><xsl:value-of select="concat(@id,'_',text())"/></pswd>
</user>
</xsl:for-each>
</users>
</xsl:template>
</xsl:stylesheet>
输出:
<?xml version="1.0" encoding="UTF-8"?><users><user><sn>1</sn><id>001</id><name>Andy</name><pswd>001_Andy</pswd></user><user><sn>2</sn><id>002</id><name>Bill</name><pswd>002_Bill</pswd></user><user><sn>3</sn><id>034</id><name>Cindy</name><pswd>034_Cindy</pswd></user></users>