示例#1
0
        public string[] TransformModel(string xmlFilePath)
        {
            var xmlFile = FileSystem.ResolveFile(xmlFilePath);

            if (!xmlFile.Exists())
            {
                throw new FileNotFoundException(xmlFilePath);
            }
            var basePath = Path.GetDirectoryName(xmlFile.Name);

            TextReader inputXmlContent = null;

            using (var fsInputStream = xmlFile.Content.GetStream(FileAccess.Read)) {
                var vfsResolver = new VfsXmlResolver(FileSystem, basePath);
                var xmlRdr      = XmlReader.Create(
                    new StreamReader(fsInputStream), null,
                    new XmlParserContext(null, null, null, XmlSpace.Default)
                {
                    BaseURI = vfsResolver.AbsoluteBaseUri.ToString()
                });

                var xIncludingXmlRdr = new Mvp.Xml.XInclude.XIncludingReader(xmlRdr);
                xIncludingXmlRdr.XmlResolver = vfsResolver;

                var xPathDoc = new XPathDocument(xIncludingXmlRdr);
                var nav      = xPathDoc.CreateNavigator();
                inputXmlContent = new StringReader(nav.OuterXml);
            }

            return(TransformModel(inputXmlContent, basePath, Path.GetFileNameWithoutExtension(xmlFile.Name)));
        }
示例#2
0
        protected XslCompiledTransform GetXslTransform(string xslPath)
        {
            var xslFile = FileSystem.ResolveFile(xslPath);

            if (!xslFile.Exists())
            {
                throw new FileNotFoundException(xslPath);
            }

            var xslt        = new XslCompiledTransform();
            var xmlResolver = new VfsXmlResolver(FileSystem, Path.GetDirectoryName(xslPath));

            using (var xslInputStream = xslFile.Content.GetStream(FileAccess.Read)) {
                xslt.Load(new XmlTextReader(new StreamReader(xslInputStream)),
                          XsltSettings.Default, xmlResolver);
            }
            return(xslt);
        }