2014-02-26 7 views
0

Schematron xsl 파일과 Schematron sch 파일에 액세스 할 수 있습니다. 이 코드를 C#을 사용하여 XSLT 스타일 시트로 변환하려면 어떻게해야합니까?XSLT 스타일 시트를 만드는 방법

xsl + sch -> [??? XSLT 프로세서 ??? ] -> xslt 스타일 시트

답변

0

내 질문에 대답하려면 ... 이 작업은, 안타깝게도 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(); 
관련 문제