In this example I am transforming an XML using XSLT by modifying certain child elements.
In coming XML message:
<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="/xsl/error.xsl"?> <outtask_error> <server> <name>RSDC-C12</name> </server> <application> <name>Jobs</name> <version>2012_06_15</version> <prod_status>qa</prod_status> <datacenter_location>rtwa3</datacenter_location> <request_id>n6dft440-8049-4dff-982a-ee05abc8433</request_id> </application> <error time="2014-02-06T20:01:05" timezone="Pacific Standard Time"> <error_id>aab10-825-4a52d-a261-7a845262f</error_id> <error_default_source>ICSYC</error_default_source> <request_id>b2263a40-8049-4dff-942a-ee05ef3f8433</request_id> <error_source>ICSync</error_source> <error_description>Connection Entity:abc no DB name is not configured</error_description> <stack_trace>at Company.Core.Sync.GetConnectionInfo... </stack_trace> </error> <server_variables> <param name="SERVER_NAME">RSDC-C12</param> <param name="SCRIPT_NAME">C:\Sync.exe</param> <param name="QUERY_STRING">Sync.exe Day1</param> </server_variables> <Error_Context> <param name="databasename">Company_MT</param> <param name="error_defaultsource">SYS</param> <param name="error_defaultapplicationname">Jobs</param> <param name="requestid">b8943a40-1349-4dff-232a-ee05ef523452342f</param> <param name="dbservername">fabc-sql02,1420</param> </Error_Context> </outtask_error>XSLT for the transformation:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml"/> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="outtask_error/server_variables"> <server_variables> <xsl:for-each select="param"> <xsl:text disable-output-escaping="yes"><</xsl:text><xsl:value-of select="./@name"/><xsl:text disable-output-escaping="yes">></xsl:text> <xsl:value-of select="."/> <xsl:text disable-output-escaping="yes"><</xsl:text>/<xsl:value-of select="./@name"/><xsl:text disable-output-escaping="yes">></xsl:text> </xsl:for-each> </server_variables> </xsl:template> <xsl:template match="outtask_error/Error_Context"> <Error_Context> <xsl:for-each select="param"> <xsl:text disable-output-escaping="yes"><</xsl:text><xsl:value-of select="./@name"/><xsl:text disable-output-escaping="yes">></xsl:text> <xsl:value-of select="."/> <xsl:text disable-output-escaping="yes"><</xsl:text>/<xsl:value-of select="./@name"/><xsl:text disable-output-escaping="yes">></xsl:text> </xsl:for-each> </Error_Context> </xsl:template> </xsl:stylesheet>Out going XML:
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/xsl/error.xsl"?><outtask_error> <server> <name>RSDC-C12</name> </server> <application> <name>Jobs</name> <version>2012_06_15</version> <prod_status>qa</prod_status> <datacenter_location>rtwa3</datacenter_location> <request_id>n6dft440-8049-4dff-982a-ee05abc8433</request_id> </application> <error time="2014-02-06T20:01:05" timezone="Pacific Standard Time"> <error_id>aab10-825-4a52d-a261-7a845262f</error_id> <error_default_source>ICSYC</error_default_source> <request_id>b2263a40-8049-4dff-942a-ee05ef3f8433</request_id> <error_source>ICSync</error_source> <error_description>Connection Entity:abc no DB name is not configured</error_description> <stack_trace>at Company.Core.Sync.GetConnectionInfo... </stack_trace> </error> <server_variables><SERVER_NAME>RSDC-C12</SERVER_NAME><SCRIPT_NAME>C:\Sync.exe</SCRIPT_NAME><QUERY_STRING>Sync.exe Day1</QUERY_STRING></server_variables> <Error_Context><databasename>Company_MT</databasename><error_defaultsource>SYS</error_defaultsource><error_defaultapplicationname>Jobs</error_defaultapplicationname><requestid>b8943a40-1349-4dff-232a-ee05ef523452342f</requestid><dbservername>fabc-sql02,1420</dbservername></Error_Context> </outtask_error>
2 comments:
Hi, I tried to implement part of your xsl code and doesn't work. For example the line 15 throw me "The content of elements must consist of well-formed character data or markup". Why that could be? Greetings.
Your XML might be not well formed. Please check whether it is having additional characters such as escape characters.
Post a Comment