Вот пример, основанный на моем ответе здесь .
Вы не указали, что хотели сделать для table
, поэтому я догадался.
Используя ваш XML-ввод (измененный, чтобы быть правильно сформированным):
<table name="ASSETS_TABLE" statement-type="INSERT">
<column name="ASSET_ID">string(/assets/asset/value())</column>
<column name="ASSET_VALUE">
<option name="VALUE_GREATER_THEN_0">/assets/asset > 0</option>
<option name="VALUE_LESS_THEN_0">/assets/asset < 0</option>
<option name="OTHERWISE">1</option>
</column>
<column name="ASSET_DESCRIPTION">string(/assets/asset/text())</column>
</table>
С помощью этой таблицы стилей XSLT 1.0:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="table|column|option">
<xsl:element name="{@name}">
<!--
Uncomment the following "xsl:copy-of" if you want to
retain any attributes other than "name":
<xsl:copy-of select="@*[name() != 'name']"/>
-->
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Производит этот вывод:
<ASSETS_TABLE>
<ASSET_ID>string(/assets/asset/value())</ASSET_ID>
<ASSET_VALUE>
<VALUE_GREATER_THEN_0>/assets/asset > 0</VALUE_GREATER_THEN_0>
<VALUE_LESS_THEN_0>/assets/asset < 0</VALUE_LESS_THEN_0>
<OTHERWISE>1</OTHERWISE>
</ASSET_VALUE>
<ASSET_DESCRIPTION>string(/assets/asset/text())</ASSET_DESCRIPTION>
</ASSETS_TABLE>