public void GenerateOutput( #if VISUALSTUDIO_10_0 ProjectItemElement itemElement, #else BuildItem buildItem, #endif Stream outputStream, IDictionary <string, Stream> inputFormatStreams, string defaultNamespace, IORMGeneratorItemProperties itemProperties) { this.EnsureTransform(); Stream inputStream = inputFormatStreams[this._sourceInputFormat]; XsltArgumentList argumentList = new XsltArgumentList(); argumentList.AddParam("DefaultNamespace", string.Empty, defaultNamespace); argumentList.AddExtensionObject("urn:ORMCustomTool:ItemProperties", itemProperties); string[] referenceFormats = this._referenceInputFormats; if (referenceFormats != null) { for (int i = 0; i < referenceFormats.Length; i++) { string referenceFormat = referenceFormats[i]; Stream referenceStream = inputFormatStreams[referenceFormat]; using (XmlReader referenceReader = XmlReader.Create(referenceStream)) { argumentList.AddParam(referenceFormat, string.Empty, new XPathDocument(referenceReader).CreateNavigator().Select(DocumentElementXPathExpression)); } referenceStream.Seek(0, SeekOrigin.Begin); } } XmlReader inputReader = null; XmlWriter outputWriter = null; try { inputReader = XmlReader.Create(inputStream, XmlReaderSettings); outputWriter = XmlWriter.Create(outputStream, this._xmlWriterSettings); this._transform.Transform(inputReader, argumentList, outputWriter); } finally { if (inputReader != null) { inputReader.Close(); } if (outputWriter != null) { outputWriter.Close(); } inputStream.Seek(0, SeekOrigin.Begin); } }
public void GenerateOutput( #if VISUALSTUDIO_10_0 ProjectItemElement itemElement, #else BuildItem buildItem, #endif Stream outputStream, GetFormatStream inputFormatStreams, string defaultNamespace, IORMGeneratorItemProperties itemProperties, GeneratorTarget[] targetInstance) { this.EnsureTransform(); Stream inputStream = inputFormatStreams(this._sourceInputFormat); XsltArgumentList argumentList = new XsltArgumentList(); argumentList.AddParam("DefaultNamespace", string.Empty, defaultNamespace); argumentList.AddExtensionObject("urn:ORMCustomTool:ItemProperties", itemProperties); string[] referenceFormats = this._referenceInputFormats; if (referenceFormats != null) { for (int i = 0; i < referenceFormats.Length; ++i) { string referenceFormat = referenceFormats[i]; Stream referenceStream = inputFormatStreams(referenceFormat); using (XmlReader referenceReader = XmlReader.Create(referenceStream)) { argumentList.AddParam(referenceFormat, string.Empty, new XPathDocument(referenceReader).CreateNavigator().Select(DocumentElementXPathExpression)); } referenceStream.Seek(0, SeekOrigin.Begin); } } if (targetInstance != null) { List <string> placeholders = null; for (int i = 0; i < targetInstance.Length; ++i) { GeneratorTarget target = targetInstance[i]; string targetType = target.TargetType; string instructionText = null; bool isLocalPlaceholder = false; if (target.TargetName == null) { (placeholders ?? (placeholders = new List <string>())).Add(targetType); IList <string> localTargetTypes = _generatorTargetTypes; int targetTypeCount; if (0 != (targetTypeCount = localTargetTypes.Count)) { for (int j = 0; j < targetTypeCount; ++j) { if (targetType == localTargetTypes[j]) { isLocalPlaceholder = true; instructionText = _generatorTargetInstructions[j]; break; } } } } argumentList.AddParam(targetType, string.Empty, target.TargetId ?? (isLocalPlaceholder ? instructionText : null) ?? string.Empty); } if (placeholders != null) { argumentList.AddParam("_GeneratorPlaceholders", string.Empty, placeholders.Count == 1 ? placeholders[0] : #if VISUALSTUDIO_10_0 string.Join <string>(" ", placeholders) #else string.Join(" ", placeholders.ToArray()) #endif ); } } XmlReader inputReader = null; XmlWriter outputWriter = null; try { inputReader = XmlReader.Create(inputStream, XmlReaderSettings); outputWriter = XmlWriter.Create(outputStream, this._xmlWriterSettings); this._transform.Transform(inputReader, argumentList, outputWriter); } finally { if (inputReader != null) { inputReader.Close(); } if (outputWriter != null) { outputWriter.Close(); } inputStream.Seek(0, SeekOrigin.Begin); } }