Note that there are some explanatory texts on larger screens.

plurals
  1. POSpace in XML Tag Name
    text
    copied!<p>My XML is like this:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8" standalone="no"?&gt; &lt;Rowsets CachedTime="" DateCreated="2013-07-30T00:13:32" EndDate="2013-07-30T00:13:29" StartDate="2013-07-29T23:13:29" Version="12.2.4 Build(92)"&gt; &lt;Rowset&gt; &lt;Columns&gt; &lt;Column Description="Name" MaxRange="1" MinRange="0" Name="Name" SQLDataType="-9" SourceColumn="Name"/&gt; &lt;Column Description="Value" MaxRange="1" MinRange="0" Name="Value" SQLDataType="-9" SourceColumn="Value"/&gt; &lt;Column Description="Min" MaxRange="1" MinRange="0" Name="Min" SQLDataType="2" SourceColumn="Min"/&gt; &lt;Column Description="Max" MaxRange="1" MinRange="0" Name="Max" SQLDataType="2" SourceColumn="Max"/&gt; &lt;Column Description="ObjectDisplay" MaxRange="1" MinRange="0" Name="ObjectDisplay" SQLDataType="12" SourceColumn="ObjectDisplay"/&gt; &lt;Column Description="Datatype" MaxRange="1" MinRange="0" Name="Datatype" SQLDataType="-9" SourceColumn="Datatype"/&gt; &lt;/Columns&gt; &lt;Row&gt; &lt;Name&gt;Tank&lt;/Name&gt; &lt;Value&gt;T111&lt;/Value&gt; &lt;Min&gt;1&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Name&gt;Material&lt;/Name&gt; &lt;Value&gt;111-Bulk&lt;/Value&gt; &lt;Min&gt;7&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Name&gt;Batch&lt;/Name&gt; &lt;Value&gt;1111111&lt;/Value&gt; &lt;Min&gt;7&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;/Rowset&gt; &lt;Rowset&gt; &lt;Columns&gt; &lt;Column Description="Name" MaxRange="1" MinRange="0" Name="Name" SQLDataType="-9" SourceColumn="Name"/&gt; &lt;Column Description="Value" MaxRange="1" MinRange="0" Name="Value" SQLDataType="-9" SourceColumn="Value"/&gt; &lt;Column Description="Min" MaxRange="1" MinRange="0" Name="Min" SQLDataType="2" SourceColumn="Min"/&gt; &lt;Column Description="Max" MaxRange="1" MinRange="0" Name="Max" SQLDataType="2" SourceColumn="Max"/&gt; &lt;Column Description="ObjectDisplay" MaxRange="1" MinRange="0" Name="ObjectDisplay" SQLDataType="12" SourceColumn="ObjectDisplay"/&gt; &lt;Column Description="Datatype" MaxRange="1" MinRange="0" Name="Datatype" SQLDataType="-9" SourceColumn="Datatype"/&gt; &lt;/Columns&gt; &lt;Row&gt; &lt;Name&gt;Tank&lt;/Name&gt; &lt;Value&gt;T222&lt;/Value&gt; &lt;Min&gt;1&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Name&gt;Material&lt;/Name&gt; &lt;Value&gt;222-Bulk&lt;/Value&gt; &lt;Min&gt;7&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Name&gt;Batch&lt;/Name&gt; &lt;Value&gt;2222222&lt;/Value&gt; &lt;Min&gt;7&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;/Rowset&gt; &lt;/Rowsets&gt; </code></pre> <p>I use following XSLT to transform above mentioned XML:</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt; &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&gt; &lt;xsl:output indent="yes"/&gt; &lt;!-- &lt;xsl:strip-space elements="*"/&gt;--&gt; &lt;xsl:template match="/*"&gt; &lt;xsl:copy&gt; &lt;xsl:copy-of select="@*"/&gt; &lt;Rowset&gt; &lt;Columns&gt; &lt;xsl:apply-templates mode="cols" select="Rowset[1]/Row"/&gt; &lt;/Columns&gt; &lt;xsl:apply-templates select="Rowset"/&gt; &lt;/Rowset&gt; &lt;/xsl:copy&gt; &lt;/xsl:template&gt; &lt;xsl:template match="Row" mode="cols"&gt; &lt;Column Description="" MaxRange="1" MinRange="0" Name="{Name}" SQLDataType="1" SourceColumn="{Name}"/&gt; &lt;/xsl:template&gt; &lt;xsl:template match="Rowset"&gt; &lt;Row&gt; &lt;xsl:apply-templates select="Row/Name"/&gt; &lt;/Row&gt; &lt;/xsl:template&gt; &lt;xsl:template match="Name"&gt; &lt;xsl:element name="{.}"&gt; &lt;xsl:value-of select="../Value"/&gt; &lt;/xsl:element&gt; &lt;/xsl:template&gt; &lt;/xsl:stylesheet&gt; </code></pre> <p>I get proper Out as following:</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt; &lt;Rowsets CachedTime="" DateCreated="2013-07-30T00:13:32" EndDate="2013-07-30T00:13:29" StartDate="2013-07-29T23:13:29" Version="12.2.4 Build(92)"&gt; &lt;Rowset&gt; &lt;Columns&gt; &lt;Column Description="" MaxRange="1" MinRange="0" Name="Tank" SQLDataType="1" SourceColumn="Tank"/&gt; &lt;Column Description="" MaxRange="1" MinRange="0" Name="Material" SQLDataType="1" SourceColumn="Material"/&gt; &lt;Column Description="" MaxRange="1" MinRange="0" Name="Batch" SQLDataType="1" SourceColumn="Batch"/&gt; &lt;/Columns&gt; &lt;Row&gt; &lt;Tank&gt;T111&lt;/Tank&gt; &lt;Material&gt;111-Bulk&lt;/Material&gt; &lt;Batch&gt;1111111&lt;/Batch&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Tank&gt;T222&lt;/Tank&gt; &lt;Material&gt;222-Bulk&lt;/Material&gt; &lt;Batch&gt;2222222&lt;/Batch&gt; &lt;/Row&gt; &lt;/Rowset&gt; &lt;/Rowsets&gt; </code></pre> <p>But now when I have following XML and when I run XSLT, I gives me below mentioned error:</p> <p>XML:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8" standalone="no"?&gt; &lt;Rowsets CachedTime="" DateCreated="2013-07-30T00:13:32" EndDate="2013-07-30T00:13:29" StartDate="2013-07-29T23:13:29" Version="12.2.4 Build(92)"&gt; &lt;Rowset&gt; &lt;Columns&gt; &lt;Column Description="Name" MaxRange="1" MinRange="0" Name="Name" SQLDataType="-9" SourceColumn="Name"/&gt; &lt;Column Description="Value" MaxRange="1" MinRange="0" Name="Value" SQLDataType="-9" SourceColumn="Value"/&gt; &lt;Column Description="Min" MaxRange="1" MinRange="0" Name="Min" SQLDataType="2" SourceColumn="Min"/&gt; &lt;Column Description="Max" MaxRange="1" MinRange="0" Name="Max" SQLDataType="2" SourceColumn="Max"/&gt; &lt;Column Description="ObjectDisplay" MaxRange="1" MinRange="0" Name="ObjectDisplay" SQLDataType="12" SourceColumn="ObjectDisplay"/&gt; &lt;Column Description="Datatype" MaxRange="1" MinRange="0" Name="Datatype" SQLDataType="-9" SourceColumn="Datatype"/&gt; &lt;/Columns&gt; &lt;Row&gt; &lt;Name&gt;Tank Tag&lt;/Name&gt; &lt;Value&gt;T111&lt;/Value&gt; &lt;Min&gt;1&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Name&gt;Material&lt;/Name&gt; &lt;Value&gt;111-Bulk&lt;/Value&gt; &lt;Min&gt;7&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Name&gt;Batch&lt;/Name&gt; &lt;Value&gt;1111111&lt;/Value&gt; &lt;Min&gt;7&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;/Rowset&gt; &lt;Rowset&gt; &lt;Columns&gt; &lt;Column Description="Name" MaxRange="1" MinRange="0" Name="Name" SQLDataType="-9" SourceColumn="Name"/&gt; &lt;Column Description="Value" MaxRange="1" MinRange="0" Name="Value" SQLDataType="-9" SourceColumn="Value"/&gt; &lt;Column Description="Min" MaxRange="1" MinRange="0" Name="Min" SQLDataType="2" SourceColumn="Min"/&gt; &lt;Column Description="Max" MaxRange="1" MinRange="0" Name="Max" SQLDataType="2" SourceColumn="Max"/&gt; &lt;Column Description="ObjectDisplay" MaxRange="1" MinRange="0" Name="ObjectDisplay" SQLDataType="12" SourceColumn="ObjectDisplay"/&gt; &lt;Column Description="Datatype" MaxRange="1" MinRange="0" Name="Datatype" SQLDataType="-9" SourceColumn="Datatype"/&gt; &lt;/Columns&gt; &lt;Row&gt; &lt;Name&gt;Tank Tag&lt;/Name&gt; &lt;Value&gt;T222&lt;/Value&gt; &lt;Min&gt;1&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Name&gt;Material&lt;/Name&gt; &lt;Value&gt;222-Bulk&lt;/Value&gt; &lt;Min&gt;7&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Name&gt;Batch&lt;/Name&gt; &lt;Value&gt;2222222&lt;/Value&gt; &lt;Min&gt;7&lt;/Min&gt; &lt;Max&gt;20&lt;/Max&gt; &lt;ObjectDisplay&gt;Enabled&lt;/ObjectDisplay&gt; &lt;Datatype&gt;String&lt;/Datatype&gt; &lt;/Row&gt; &lt;/Rowset&gt; &lt;/Rowsets&gt; </code></pre> <p>Error:</p> <pre><code>[ERROR] [XSLSingleTableTransformation]XSLTransform error: java.lang.RuntimeException: An attribute whose value must be a QName had the value 'Tank Tag' </code></pre> <p>How can I remove this error? </p> <p>If this error is due to space in between tank and tag, then 1) Can I get XML tag name with spaces? 2) If not, how canI remove that space and instead as "-"</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload