[Mono-bugs] [Bug 82815][Nor] New - Duplicate key in XslTransform

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Wed Sep 12 05:02:12 EDT 2007


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by informatique.internet at fiducial.fr.

http://bugzilla.ximian.com/show_bug.cgi?id=82815

--- shadow/82815	2007-09-12 05:02:12.000000000 -0400
+++ shadow/82815.tmp.16464	2007-09-12 05:02:12.000000000 -0400
@@ -0,0 +1,351 @@
+Bug#: 82815
+Product: Mono: Class Libraries
+Version: 1.2
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Normal
+Component: Sys.XML
+AssignedTo: atsushi at ximian.com                            
+ReportedBy: informatique.internet at fiducial.fr               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: Duplicate key in XslTransform
+
+Description of Problem:
+We are trying to transform an xml file to an xml office file using an xslt
+written by microsoft. It works well with MS.NET 1.1 and also with libxslt
+(xsltproc) but it fails on mono
+
+Steps to reproduce the problem:
+1. 
+Try this program
+// project created on 12/09/2007 at 09:52
+using System;
+using System.IO;
+using System.Data;
+using System.Xml;
+
+using System.Xml.Xsl;
+
+using System.Xml.XPath;
+
+namespace TestXSL
+{
+	class MainClass
+	{
+		public static void Main(string[] args)
+		{
+			DataSet ds = new DataSet();
+			FileStream fs=new FileStream("./output.xml",FileMode.Create);
+
+			ds.ReadXml("../../Users_new.xml");
+			ds.EnforceConstraints=false;
+
+			XmlDataDocument xdd = new XmlDataDocument(ds);
+
+			XslTransform xt = new XslTransform();
+
+			xt.Load("../../Excel.xsl");
+
+			xt.Transform(xdd, null, fs);
+		}
+	}
+}
+2. With Users_new.xml
+&#65279;<?xml version="1.0" encoding="UTF-8"?>
+<stats>
+<Utilisateurs  type="NeverConnected" date="11/09/2007 10:43:17">
+	<line num="1">
+		<user_id>5e10f344-1470-4978-b440-7b8fe678cae1</user_id>
+		<number>000575</number>
+		<gender>M.</gender>
+		<name>Bidon</name>
+		<first_name>Gerard</first_name>
+		<budget_code>64900</budget_code>
+		<budget_label>D.R./PAU</budget_label>
+		<date_creation>16/04/2007 10:09:34</date_creation>
+	</line>
+	</Utilisateurs>
+</stats>
+3. 
+<?xml version="1.0"?>
+
+
+
+<xsl:stylesheet version="1.0"
+
+    xmlns="urn:schemas-microsoft-com:office:spreadsheet"
+
+    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
+
+ xmlns:msxsl="urn:schemas-microsoft-com:xslt"
+
+ xmlns:user="urn:my-scripts"
+
+ xmlns:o="urn:schemas-microsoft-com:office:office"
+
+ xmlns:x="urn:schemas-microsoft-com:office:excel"
+
+ xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" > 
+
+ 
+
+<xsl:template match="/">
+
+  <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
+
+    xmlns:o="urn:schemas-microsoft-com:office:office"
+
+    xmlns:x="urn:schemas-microsoft-com:office:excel"
+
+    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
+
+    xmlns:html="http://www.w3.org/TR/REC-html40">
+
+    <xsl:apply-templates/>
+
+
+
+ <Styles>
+
+  <Style ss:ID="Default" ss:Name="Normal">
+
+   <Alignment ss:Vertical="Bottom"/>
+
+   <Borders/>
+
+   <Font/>
+
+   <Interior/>
+
+   <NumberFormat/>
+
+   <Protection/>
+
+  </Style>
+
+  <Style ss:ID="s21">
+
+   <Font ss:Bold="1"/>
+
+   <Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
+
+  </Style>
+
+  <Style ss:ID="s22">
+
+   <Alignment ss:Horizontal="Center" ss:Vertical="Bottom"/>
+
+   <Font ss:Bold="1"/>
+
+   <Interior ss:Color="#99CCFF" ss:Pattern="Solid"/>
+
+  </Style>
+
+ </Styles>
+
+  </Workbook>
+
+</xsl:template>
+
+
+
+<xsl:template match="/*/*">
+
+  <Worksheet>
+
+  <xsl:attribute name="ss:Name">
+
+  <xsl:value-of select="local-name(/*/*)"/>
+
+  </xsl:attribute>
+
+    <Table x:FullColumns="1" x:FullRows="1">
+
+     <Row>
+
+        <xsl:for-each select="*[position() = 1]/*">
+
+          <Cell ss:StyleID="s22"><Data ss:Type="String">
+
+          <xsl:value-of select="local-name()"/>
+
+          </Data></Cell>
+
+        </xsl:for-each>
+
+      </Row>
+
+      <xsl:apply-templates/>
+
+    </Table>
+
+  </Worksheet>
+
+</xsl:template>
+
+
+
+
+
+<xsl:template match="/*/*/*">
+
+  <Row>
+
+    <xsl:apply-templates/>
+
+  </Row>
+
+</xsl:template>
+
+
+
+
+
+<xsl:template match="/*/*/*/*">
+
+  <Cell><Data ss:Type="String">
+
+    <xsl:value-of select="."/>
+
+  </Data></Cell>
+
+</xsl:template>
+
+
+
+
+
+</xsl:stylesheet>
+Actual Results:
+Unhandled Exception: System.ArgumentException: key
+Parameter name: Duplicate key in add.
+  at System.Collections.Specialized.ListDictionary.Add (System.Object key,
+System.Object value) [0x00029] in
+/home/hubert/mono/mcs/class/System/System.Collections.Specialized/ListDictionary.cs:191
+
+  at Mono.Xml.Xsl.GenericOutputter.CheckState () [0x001b6] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl/GenericOutputter.cs:203 
+  at Mono.Xml.Xsl.GenericOutputter.WriteStartElement (System.String prefix,
+System.String localName, System.String nsURI) [0x0009f] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl/GenericOutputter.cs:246 
+  at Mono.Xml.Xsl.Operations.XslLiteralElement.Evaluate
+(Mono.Xml.Xsl.XslTransformProcessor p) [0x0003e] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl.Operations/XslLiteralElement.cs:127
+
+  at Mono.Xml.Xsl.Operations.XslTemplateContent.Evaluate
+(Mono.Xml.Xsl.XslTransformProcessor p) [0x00047] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl.Operations/XslTemplateContent.cs:199
+
+  at Mono.Xml.Xsl.Operations.XslLiteralElement.Evaluate
+(Mono.Xml.Xsl.XslTransformProcessor p) [0x000f6] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl.Operations/XslLiteralElement.cs:141
+
+  at Mono.Xml.Xsl.Operations.XslTemplateContent.Evaluate
+(Mono.Xml.Xsl.XslTransformProcessor p) [0x00047] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl.Operations/XslTemplateContent.cs:199
+
+  at Mono.Xml.Xsl.Operations.XslLiteralElement.Evaluate
+(Mono.Xml.Xsl.XslTransformProcessor p) [0x000f6] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl.Operations/XslLiteralElement.cs:141
+
+  at Mono.Xml.Xsl.Operations.XslTemplateContent.Evaluate
+(Mono.Xml.Xsl.XslTransformProcessor p) [0x00047] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl.Operations/XslTemplateContent.cs:199
+
+  at Mono.Xml.Xsl.Operations.XslLiteralElement.Evaluate
+(Mono.Xml.Xsl.XslTransformProcessor p) [0x000f6] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl.Operations/XslLiteralElement.cs:141
+
+  at Mono.Xml.Xsl.Operations.XslTemplateContent.Evaluate
+(Mono.Xml.Xsl.XslTransformProcessor p) [0x00047] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl.Operations/XslTemplateContent.cs:199
+
+  at Mono.Xml.Xsl.XslTemplate.EvaluateCore
+(Mono.Xml.Xsl.XslTransformProcessor p, System.Collections.Hashtable
+withParams) [0x000e1] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl/XslTemplate.cs:415 
+  at Mono.Xml.Xsl.XslTemplate.Evaluate (Mono.Xml.Xsl.XslTransformProcessor
+p, System.Collections.Hashtable withParams) [0x0004c] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl/XslTemplate.cs:384 
+  at Mono.Xml.Xsl.XslTransformProcessor.ApplyTemplates
+(System.Xml.XPath.XPathNodeIterator nodes, System.Xml.XmlQualifiedName
+mode, System.Collections.ArrayList withParams) [0x0002e] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl/XslTransformProcessor.cs:252
+
+  at Mono.Xml.Xsl.XslTransformProcessor.Process
+(System.Xml.XPath.XPathNavigator root, Mono.Xml.Xsl.Outputter outputtter,
+System.Xml.Xsl.XsltArgumentList args, System.Xml.XmlResolver resolver)
+[0x00164] in
+/home/hubert/mono/mcs/class/System.XML/Mono.Xml.Xsl/XslTransformProcessor.cs:112
+
+  at System.Xml.Xsl.XslTransform.Transform (System.Xml.XPath.XPathNavigator
+input, System.Xml.Xsl.XsltArgumentList args, System.IO.TextWriter output,
+System.Xml.XmlResolver resolver) [0x0002f] in
+/home/hubert/mono/mcs/class/System.XML/System.Xml.Xsl/XslTransform.cs:237 
+  at System.Xml.Xsl.XslTransform.Transform (System.Xml.XPath.XPathNavigator
+input, System.Xml.Xsl.XsltArgumentList args, System.IO.Stream output,
+System.Xml.XmlResolver resolver) [0x0001b] in
+/home/hubert/mono/mcs/class/System.XML/System.Xml.Xsl/XslTransform.cs:216 
+  at System.Xml.Xsl.XslTransform.Transform (IXPathNavigable input,
+System.Xml.Xsl.XsltArgumentList args, System.IO.Stream output) [0x00000] in
+/home/hubert/mono/mcs/class/System.XML/System.Xml.Xsl/XslTransform.cs:151 
+  at TestXSL.MainClass.Main (System.String[] args) [0x0003d] in
+/home/hubert/Projects/TestXSL/TestXSL/Main.cs:22 
+
+
+
+Expected Results:
+output.xml :
+
+<?xml version="1.0"?>
+<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
+xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:x="urn:schemas-microsoft-com:office:excel"
+xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
+xmlns:html="http://www.w3.org/TR/REC-html40"
+xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts">
+<Worksheet ss:Name="Utilisateurs"><Table x:FullColumns="1"
+x:FullRows="1"><Row><Cell ss:StyleID="s22"><Data
+ss:Type="String">user_id</Data></Cell><Cell ss:StyleID="s22"><Data
+ss:Type="String">number</Data></Cell><Cell ss:StyleID="s22"><Data
+ss:Type="String">gender</Data></Cell><Cell ss:StyleID="s22"><Data
+ss:Type="String">name</Data></Cell><Cell ss:StyleID="s22"><Data
+ss:Type="String">first_name</Data></Cell><Cell ss:StyleID="s22"><Data
+ss:Type="String">budget_code</Data></Cell><Cell ss:StyleID="s22"><Data
+ss:Type="String">budget_label</Data></Cell><Cell ss:StyleID="s22"><Data
+ss:Type="String">date_creation</Data></Cell></Row>
+        <Row>
+                <Cell><Data
+ss:Type="String">5e10f344-1470-4978-b440-7b8fe678cae1</Data></Cell>
+                <Cell><Data ss:Type="String">000575</Data></Cell>
+                <Cell><Data ss:Type="String">M.</Data></Cell>
+                <Cell><Data ss:Type="String">Tripoli</Data></Cell>
+                <Cell><Data ss:Type="String">Gerard</Data></Cell>
+                <Cell><Data ss:Type="String">64900</Data></Cell>
+                <Cell><Data ss:Type="String">D.R./PAU</Data></Cell>
+                <Cell><Data ss:Type="String">16/04/2007 10:09:34</Data></Cell>
+        </Row>
+        </Table></Worksheet>
+<Styles><Style ss:ID="Default" ss:Name="Normal"><Alignment
+ss:Vertical="Bottom"/><Borders/><Font/><Interior/><NumberFormat/><Protection/></Style><Style
+ss:ID="s21"><Font ss:Bold="1"/><Alignment ss:Horizontal="Center"
+ss:Vertical="Bottom"/></Style><Style ss:ID="s22"><Alignment
+ss:Horizontal="Center" ss:Vertical="Bottom"/><Font ss:Bold="1"/><Interior
+ss:Color="#99CCFF" ss:Pattern="Solid"/></Style></Styles></Workbook>
+
+How often does this happen? 
+always
+
+Additional Information:
+Please note that it seems that the bug comes from duplicate namespace name
+:  xmlns="urn:schemas-microsoft-com:office:spreadsheet"
+and xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
+anyway the xslt style sheet seems to be well formated...
+
+Thanks


More information about the mono-bugs mailing list