Как создать таблицу стилей XSLT

У меня есть доступ к файлам Schematron xsl и файлу Schematron sch. Как я могу преобразовать это в таблицу стилей XSLT с помощью С#?

xsl + sch --> [??? XSLT-процессор ??? ] --> таблица стилей xslt


person jlo-gmail    schedule 26.02.2014    source источник


Ответы (1)


Чтобы ответить на мой собственный вопрос... Это работает, к сожалению, файлы Schematron поддерживают только очень простой синтаксис с использованием XslCompiledTransform. На SAXON, чтобы увидеть, как это работает :(

        string xmlFile = @"sch\patient.sch";
        string xslFile = @"xsl\conformance1-5.xsl";
        XslCompiledTransform xsltransform = new XslCompiledTransform();
        xsltransform.Load(xslFile);

        XmlDocument doc = new XmlDocument();
        doc.Load(xmlFile);
        XPathNavigator nav = doc.CreateNavigator();

        System.IO.MemoryStream st = new System.IO.MemoryStream();
        xsltransform.Transform(nav, null, st);
        st.Position = 0;
        System.IO.StreamReader rd = new System.IO.StreamReader(st);
        string xslt = rd.ReadToEnd();

        System.Diagnostics.Debug.WriteLine(xslt);

        XmlReader reader = XmlReader.Create(new System.IO.StringReader(xslt));
        xsltransform.Load(reader);

        var patient = PatientFactory.GeneratePatientBySOAPClasses();
        patient.identifier[0].period.end.value = DateTime.Now.ToString("yyyy-MM-dd");
        patient.identifier[0].period.start.value = DateTime.Now.AddYears(15).ToString("yyyy-MM-dd");
        patient.identifier[0].period.start = null;

        string xml = Serialization.SerializeXML(patient, "http://hl7.org/fhir");

        xml = xml.Replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://hl7.org/fhir\"", "");
        doc.LoadXml(xml);
        nav = doc.CreateNavigator();

        st = new System.IO.MemoryStream();
        xsltransform.Transform(nav, null, st);
        st.Position = 0;
        rd = new System.IO.StreamReader(st);
        string scematronresult = rd.ReadToEnd();
person jlo-gmail    schedule 27.02.2014