private void Transform(string contentId, string metadataXml, string annotationsXml, string versionId, string docTitle, Content contentDataSet) { var annotations = new XmlDocument(); var filename = Path.Combine(_withinChmDir, contentId + ApplicationStrings.FILE_EXTENSION_HTM); string xml; if (File.Exists(filename)) { using (var sr = new StreamReader(filename)) { xml = sr.ReadToEnd(); sr.Close(); } } else //Probably a node file that simply lists its children -- We will deal with this at a later date { xml = "<div class=\"topic\" xmlns=\"http://www.w3.org/1999/xhtml\">" + crlf + " <div class=\"majorTitle\">" + docTitle + "</div>" + crlf + " <div class=\"title\">" + docTitle + "</div>" + crlf + " <div id=\"mainSection\">" + crlf + " <div id=\"mainBody\">" + crlf + " <p></p>" + crlf + //RWC: Too difficult to add child link list like MSDN Online. Just leave blank. " </div>" + crlf + " </div>" + crlf + "</div>" + crlf; } var codePage = new CultureInfo(_locale).TextInfo.ANSICodePage; // We use these fallbacks because is unknown under DBCS like Japanese // and translated to ? by default. var encoding = Encoding.GetEncoding(codePage, new EncoderReplacementFallback(" "), new DecoderReplacementFallback(" ")); var metadata = new XmlDocument(); metadata.LoadXml(metadataXml); annotations.LoadXml(annotationsXml); Debug.Assert(contentDataSet != null, "contentDataSet is null !"); var link = new Link(contentDataSet, _links); var arguments = new XsltArgumentList(); arguments.AddParam("metadata", "", metadata.CreateNavigator()); arguments.AddParam("annotations", "", annotations.CreateNavigator()); arguments.AddParam("version", "", versionId); arguments.AddParam("locale", "", _locale); arguments.AddParam("charset", "", encoding.WebName); arguments.AddExtensionObject("urn:Link", link); TextReader textReader = new StringReader(xml); using (var xmlReader = XmlReader.Create(textReader)) using (var streamWriter = new StreamWriter(filename, false, encoding)) { try { _xform.Transform(xmlReader, arguments, streamWriter); } catch (Exception ex) { Debug.WriteLine(ex.Message); Debugger.Break(); } } }
public void Transform(string contentId, string metadataXml, string annotationsXml, string versionId, string docTitle, Content contentDataSet) { XsltArgumentList arguments = new XsltArgumentList(); Link link = new Link(contentDataSet, links); XmlDocument metadata = new XmlDocument(); XmlDocument annotations = new XmlDocument(); string filename = Path.Combine(withinHxsDir, contentId + ApplicationStrings.FILE_EXTENSION_HTM); string xml; if (File.Exists(filename)) { StreamReader sr = new StreamReader(filename); xml = sr.ReadToEnd(); sr.Close(); } else //Default to Simple headers only { xml = "<div class=\"topic\" xmlns=\"http://www.w3.org/1999/xhtml\">" + Environment.NewLine + " <div class=\"majorTitle\">" + docTitle + "</div>" + Environment.NewLine + " <div class=\"title\">" + docTitle + "</div>" + Environment.NewLine + " <div id=\"mainSection\">" + Environment.NewLine + " <div id=\"mainBody\">" + Environment.NewLine + " <p></p>" + Environment.NewLine + //RWC: Too difficult to add child link list like MSDN Online. Just leave blank. " </div>" + Environment.NewLine + " </div>" + Environment.NewLine + "</div>" + Environment.NewLine; } metadata.LoadXml(metadataXml); annotations.LoadXml(annotationsXml); // Do transform arguments.AddParam("metadata", "", metadata.CreateNavigator()); arguments.AddParam("annotations", "", annotations.CreateNavigator()); arguments.AddParam("version", "", versionId); arguments.AddParam("locale", "", locale); arguments.AddExtensionObject("urn:Link", link); TextReader tr = new StringReader(xml); XmlReader xr = XmlReader.Create(tr); using (StreamWriter sw = new StreamWriter(filename, false, Encoding.UTF8)) { try { xform.Transform(xr, arguments, sw); } catch (Exception ex) { Debug.WriteLine(ex.Message); Debugger.Break(); } } }
public void Transform(string contentId, string assetId, string metadataXml, string annotationsXml, string versionId, string docTitle, string tocParent, string tocOrder, Content contentDataSet) { XsltArgumentList arguments = new XsltArgumentList(); Link link = new Link(contentDataSet, _links); XmlDocument metadata = new XmlDocument(); XmlDocument annotations = new XmlDocument(); string filename = Path.Combine(_rawDir, contentId + ApplicationStrings.FILE_EXTENSION_HTM); string xml2; if (File.Exists(filename)) { StreamReader sr2 = new StreamReader(filename); xml2 = sr2.ReadToEnd(); sr2.Close(); } else //Probably a node file that simply lists its children -- We will deal with this at a later date { xml2 = "<div class=\"topic\" xmlns=\"http://www.w3.org/1999/xhtml\">" + " <div class=\"majorTitle\">" + docTitle + "</div>" + " <div class=\"title\">" + docTitle + "</div>" + " <div id=\"mainSection\">" + " <div id=\"mainBody\">" + " <p></p>" + //RWC: Too difficult to add child link list like MSDN Online. Just leave blank. " </div>" + " </div>" + "</div>"; } int codePage = new CultureInfo(_locale).TextInfo.ANSICodePage; string topicVersion = versionId; int idx = versionId.LastIndexOf('.'); if (idx >= 0) topicVersion = versionId.Substring(idx + 1); //we want the 100 from vs.100 // We use these fallbacks because is unknown under DBCS like Japanese // and translated to ? by default. Encoding encoding = Encoding.GetEncoding(codePage, new EncoderReplacementFallback(" "), new DecoderReplacementFallback(" ")); metadata.LoadXml(metadataXml); annotations.LoadXml(annotationsXml); arguments.AddParam("metadata", "", metadata.CreateNavigator()); arguments.AddParam("annotations", "", annotations.CreateNavigator()); arguments.AddParam("assetId", "", assetId); arguments.AddParam("version", "", versionId); arguments.AddParam("tocOrder", "", tocOrder); arguments.AddParam("tocParent", "", tocParent); arguments.AddParam("locale", "", _locale); arguments.AddParam("charset", "", encoding.WebName); arguments.AddParam("package", "", _packageName); arguments.AddParam("topicVersion", "", topicVersion); arguments.AddExtensionObject("urn:Link", link); TextReader tr2 = new StringReader(xml2); XmlReader xr2 = XmlReader.Create(tr2); using (StreamWriter sw2 = new StreamWriter(filename, false, System.Text.Encoding.UTF8)) { try { _xform.Transform(xr2, arguments, sw2); } catch (Exception ex) { Debug.WriteLine(ex.Message); Debugger.Break(); } } }