It looks like it happens always with rich text content. For an example (this
is the automatically generated upgrade.xsl to a really simple Infopath form
which consists on a rich text field alone "m:richTextField" and later added
a new attribute "my:newAttribute").
upgrade.xsl:
--------------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:my="
http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-01-04T15:33:26"
xmlns:xd="
http://schemas.microsoft.com/office/infopath/2003"
xmlns:xhtml="
http://www.w3.org/1999/xhtml" version="1.0">
<xsl

utput encoding="UTF-8" method="xml"/>
<xsl:template match="text() |
*[namespace-uri()='
http://www.w3.org/1999/xhtml']" mode="RichText">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="/">
<xsl:copy-of select="processing-instruction() | comment()"/>
<xsl:choose>
<xsl:when test="my:myFields">
<xsl:apply-templates select="my:myFields" mode="_0"/>
</xsl:when>
<xsl

therwise>
<xsl:variable name="var">
<xsl:element name="my:myFields"/>
</xsl:variable>
<xsl:apply-templates select="msxsl:node-set($var)/*" mode="_0"/>
</xsl

therwise>
</xsl:choose>
</xsl:template>
<xsl:template match="my:myFields" mode="_0">
<xsl:copy>
<xsl:attribute name="my:newAttribute">
<xsl:value-of select="@my:newAttribute"/>
</xsl:attribute>
<xsl:element name="my:richTextField">
<xsl:apply-templates select="my:richTextField/text() |
my:richTextField/*[namespace-uri()='
http://www.w3.org/1999/xhtml']"
mode="RichText"/>
</xsl:element>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
-------------------------------------------
When applied to this .xml file generated with Infopath after filling the
form (with no my:newAttribute):
form2.xml:
--------------------------
<?xml version="1.0" encoding="UTF-8"?>
<?mso-infoPathSolution solutionVersion="1.0.0.2" productVersion="11.0.6565"
PIVersion="1.0.0.0"
href="file:///C:\Documents%20and%20Settings\IvarZapata2\My%20Documents\Desktop\UpgradeInfopath\Template1.xsn"
name="urn:schemas-microsoft-com

ffice:infopath:Template1:-myXSD-2006-01-04T15-33-26"
?><?mso-application progid="InfoPath.Document"?><my:myFields
xmlns:my="
http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-01-04T15:33:26"
xml:lang="es">
<my:richTextField>
<div xmlns="
http://www.w3.org/1999/xhtml">Rich text content</div>
<div xmlns="
http://www.w3.org/1999/xhtml"></div>
</my:richTextField>
</my:myFields>
-------------------------
The program I use is really simple:
using System;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
class QuickXslTransformer
{
private XslTransform xslt = new XslTransform();
public QuickXslTransformer(
string source,
string stylesheet,
string output)
{
xslt.Load(stylesheet);
xslt.Transform(source, output, null as XmlResolver);
}
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
try
{
QuickXslTransformer o;
o = new QuickXslTransformer(args[0], args[1], args[2]);
}
catch (Exception e)
{
Console.WriteLine(
"Unable to apply the XSLT transformation.");
Console.WriteLine("Error:\t{0}", e.Message);
Console.WriteLine("Exception: {0}", e.GetType().ToString());
Console.ReadLine();
}
return;
}
}