How to ignore xml namespaces in XSL?

I have an xml that contains an empty xmlns:tag0='' , is there a way I can ignore alltogether namespaces or add a default value to it? Because it stops my xml to open using xsl transforms. It says Reference to undeclared namespace prefix: 'tag0'.

Or is there a way to replace xmlns:tag0='' with xmlns:tag0='http://www.w3.org/TR/html4/ at the beginning?

Some part of xml that creates the problem (xml is about 2 MB)

 <nodemetadata><imx:IMX versiondomainservice='2.4.1' versioncommon='2.2.0' serializationSpecVersion='4.0' xsi:schemaLocation='http://com.abc.imx IMX.xsd http://com.abc.aspd.metadata.domainservice/2 com.abc.aspd.metadata.domainservice.xsd http://com.abc.aspd.metadata.common/2 com.abc.aspd.metadata.common.xsd' crcEnabled='0' xmlns:imx='http://com.abc.imx' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><tag0:GatewayNodeConfig adminconsolePort='10073' nodeName='node01_rox.abc.com' imx:id='U:qywCXNr7EeG7SZfVCvSloA' domainName='Domain_rox.abc.com' dbConnectivity='ID_1' adminconsoleShutdownPort='10074' xmlns:tag0='http://com.abc.aspd.metadata.domainservice/2'><tag1:address port='10071' xsi:type='common:NodeAddress' host='rox.abc.com' httpPort='8080' imx:id='ID_2' xmlns:tag1=''></tag1:address><portals><tag1:NodeRef xsi:type='common:NodeRef' address='ID_2' nodeName='node01_rox.abc.com' imx:id='ID_3' xmlns:tag1=''></tag1:NodeRef></portals></tag0:GatewayNodeConfig><tag0:DBConnectivity imx:id='ID_1' dbConnectString='jdbc:abc:oracle:%2F%2FforKnight:1521%3BServiceName%3Dorcl%3BMaxPooledStatements%3D20%3BCatalogOptions%3D0%3BBatchPerformanceWorkaround%3Dtrue' dbType='ORACLE' dbEncryptedPassword='I7e20Erjax0wi7fY3qOaIxIBloTOBwLymgjvVVbkVcE%3D' dbUsername='lap1' xmlns:tag0='http://com.abc.aspd.metadata.domainservice/2'></tag0:DBConnectivity></imx:IMX></nodemetadata> 

UPDATE My XSL Code

 <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:tag0="http://www.w3.org/TR/html4/" xmlns:tag1="http://www.w3.org/TR/html4/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:imx="http://com.abc.imx" xmlns:domainservice="http://com.abc.aspd.metadata.domainservice/2" exclude-result-prefixes="tag0 tag1"> <xsl:include href="system_win.xsl"/> <xsl:include href="system_nix.xsl"/> <xsl:template match="/"> <html> <head><link rel="stylesheet" type="text/css" href="http://www.abc.com/NR/inter2004/css/styles.css"/> <style type="text/css"> .horz{overflow-x: auto; overflow-y: hidden;width: 98%;} </style> </head> <body> <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> <xsl:for-each select="client/product"> <h3><span style="color:#328aa4"><a name="_nodemetadata" href="#_top">Node MetaData</a></span></h3> <h3>Gateway Node Configuration</h3> <br/> <dd> <div class="horz"> <table border="1"> <tbody> <tr> <th>Domain Name</th> <th>Node Name</th> <th>Adminconsole Port</th> <th>Adminconsole Shutdown Port</th> <th>DB Connectivity</th> </tr> <xsl:for-each select="nodemetadata/imx:IMX/tag0:GatewayNodeConfig"> <tr> <td valign="top" ><xsl:value-of select="@domainName"/></td> <td valign="top" ><xsl:value-of select="@nodeName"/></td> <td valign="top" ><xsl:value-of select="@adminconsolePort"/></td> <td valign="top" ><xsl:value-of select="@adminconsoleShutdownPort"/></td> <td valign="top" ><xsl:value-of select="@dbConnectivity"/></td> </tr> </xsl:for-each> </tbody> </table> </div> </dd> <br/> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> 

This gives me XML parsing error: no need to decompress the prefix on tag0

+4
source share
1 answer

After you have corrected your input XML, the following XSLT 1.0 stylesheet works as needed:

also see http://www.xmlplayground.com/XyNCuA

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:imx="http://com.abc.imx" xmlns:domainservice="http://com.abc.aspd.metadata.domainservice/2" exclude-result-prefixes="imx domainservice" > <xsl:output method="html" /> <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" /> <xsl:template match="/"> <html> <head> <link rel="stylesheet" type="text/css" href="http://www.abc.com/NR/inter2004/css/styles.css"/> <style type="text/css"> .horz{overflow-x: auto; overflow-y: hidden;width: 98%;} </style> </head> <body> <p>(see output source)</p> <xsl:apply-templates select="client/product/nodemetadata" /> </body> </html> </xsl:template> <xsl:template match="nodemetadata"> <h3><span style="color:#328aa4"><a name="_nodemetadata" href="#_top">Node MetaData</a></span></h3> <xsl:apply-templates select=".//domainservice:GatewayNodeConfig" /> </xsl:template> <xsl:template match="domainservice:GatewayNodeConfig"> <h3>Gateway Node Configuration</h3> <dd> <div class="horz"> <table border="1"> <thead> <tr> <th>Domain Name</th> <th>Node Name</th> <th>Adminconsole Port</th> <th>Adminconsole Shutdown Port</th> <th>DB Connectivity</th> </tr> </thead> <tbody> <tr> <td valign="top" ><xsl:value-of select="@domainName"/></td> <td valign="top" ><xsl:value-of select="@nodeName"/></td> <td valign="top" ><xsl:value-of select="@adminconsolePort"/></td> <td valign="top" ><xsl:value-of select="@adminconsoleShutdownPort"/></td> <td valign="top" ><xsl:value-of select="@dbConnectivity"/></td> </tr> </tbody> </table> </div> </dd> <br/> </xsl:template> </xsl:stylesheet> 

output:

 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="http://www.abc.com/NR/inter2004/css/styles.css"> <style type="text/css"> .horz{overflow-x: auto; overflow-y: hidden;width: 98%;} </style> </head> <body> <p>(see output source)</p> <h3><span style="color:#328aa4"><a name="_nodemetadata" href="#_top">Node MetaData</a></span></h3> <h3>Gateway Node Configuration</h3> <dd><div class="horz"><table border="1"> <thead><tr> <th>Domain Name</th> <th>Node Name</th> <th>Adminconsole Port</th> <th>Adminconsole Shutdown Port</th> <th>DB Connectivity</th> </tr></thead> <tbody><tr> <td valign="top">Domain_rox.abc.com</td> <td valign="top">node01_rox.abc.com</td> <td valign="top">10073</td> <td valign="top">10074</td> <td valign="top">ID_1</td> </tr></tbody> </table></div></dd> <br> </body> </html> 
0
source

All Articles