public FilesBundle ApplyTransform(FilesBundle cabFile) { _outputBundle = new FilesBundle(); var manifest = XsfManifest.FromBundle(cabFile); /////////////////////////////////////////////////////////////////////////////////////////////// XsltArgumentList xslArgs = new XsltArgumentList(); xslArgs.AddExtensionObject(@"http://mcdean.com/2012-04-04T17:51:00", new XpathExt()); //Debug if(false){ XmlDocument tmpDoc = new XmlDocument(); tmpDoc.Load(cabFile[manifest.DefaultView.TransformFileName]); tmpDoc.Save("originalView.xsl"); } String viewFileName = manifest.DefaultView.TransformFileName; //First convert original xsl MemoryStream convertedMainViewStream = XslTransformer.Transform("transformView.xsl", cabFile[viewFileName], xslArgs); //After all xsl was done make corrections XmlDocument transformedViewXml = new XmlDocument(); convertedMainViewStream.Seek(0, SeekOrigin.Begin); transformedViewXml.Load(convertedMainViewStream); XmlNamespaceManager xmlns = new XmlNamespaceManager(transformedViewXml.NameTable); xmlns.AddNamespace("xd", @"http://schemas.microsoft.com/office/infopath/2003"); PadFormTableCorrector.ApplyTableModes(transformedViewXml, xmlns); //Obsolete, need to remove //IPadTransformProcessor.ApplySignboxMods(transformedViewXml, xmlns); //double adj = IPadTransformProcessor.CalculateWidthAdjustment(transformedViewXml); //IPadTransformProcessor.RemoveStyleAttribute(transformedViewXml.DocumentElement, adj); //transformedViewXml.Save(Path.Combine(outDir, "TransformedView.xsl")); convertedMainViewStream.Dispose(); convertedMainViewStream = new MemoryStream(); transformedViewXml.Save(convertedMainViewStream); _outputBundle.Add(viewFileName, convertedMainViewStream); AddCommonResources(); AddContentDependentResources(manifest, cabFile); //Debug, TODO need to remove /* if (false) { convertedMainViewStream.Seek(0, SeekOrigin.Begin); using (FileStream debugConvertedXsl = new FileStream("debug.xsl", FileMode.Create, FileAccess.Write)) { convertedMainViewStream.WriteTo(debugConvertedXsl); //System.Diagnostics.Debug.Write(convertedMainViewStream); } //Then apply converted view.xsl to template using (FileStream templateStream = new FileStream(Path.Combine(extractPath, manifest.InitialTemplateFile), FileMode.Open, FileAccess.Read, FileShare.Read)) { using (MemoryStream transformResult = XslTransformer.Transform(convertedMainViewStream, templateStream, null)) { using (FileStream outData = new FileStream(args[1], FileMode.Create, FileAccess.Write, FileShare.Read)) { transformResult.WriteTo(outData); } } } } */ return _outputBundle; }
public static XsfManifest FromBundle(FilesBundle bundle) { var manifest = new XmlDocument(); manifest.Load(bundle["manifest.xsf"]); var schemaMetadata = new XsfSchemaMetadata(manifest); XmlSchema schema = null; using (StreamReader reader = new StreamReader(bundle[schemaMetadata.FileName])) { schema = XmlSchema.Read(reader, (s, e) => { /* empty validation handler */ }); } return new XsfManifest(manifest, schema); }
private void AddContentDependentResources(XsfManifest manifest, FilesBundle cabFile) { }