Applying and XSLT transformation

Simple case

      SRC←'C:\Temp\forecasts2008.xml'
      TGT←'C:\Temp\forecasts.inc'
      XSL←'C:\Temp\forecasts.xsl'

      +⎕USING←'System' 'System.Xml,System.Xml.dll' 'System.Xml.Xsl,System.Xml.dll'
 System  System.Xml,System.Xml.dll  System.Xml.Xsl,System.Xml.dll

      xslt←⎕NEW XslCompiledTransform
      xslt.Load⊂XSL
      xslt.Transform SRC TGT

.Net 2.0 replaced the XslTransform class with [:http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform.aspx:XslCompiledTransform], making XslTransform obsolete.

XslCompiledTransform is faster than its predecessor and also closes some [:http://msdn.microsoft.com/en-us/library/ms172414.aspx:security] loopholes in its predecessor, which should be avoided.

Processing Document Type Definitions

This second example deals with an XSL stylesheet that contains a short [:http://en.wikipedia.org/wiki/Document_Type_Definition:DTD] section declaring an entity. Because the stylesheet comes from a trusted source we want the stylesheet processor to accept it. (Accepting the DTD gives the stylesheet processor a bit a of a blank cheque. Entity declarations can be used to include other files. So the processor is prohibited from processing DTD by default.) This is a common situation when processing your own XML files; for example, in converting [:http://www.docbook.org:DocBook] source into either web pages or camera-ready PDF files. So this otherwise minimal example extends to permitting DTD processing.

      xrs←⎕NEW XmlReaderSettings
      xrs.ProhibitDtd←0

      rdr←XmlReader.Create XSL xrs

      xslt←⎕NEW XslCompiledTransform
      xslt.Load rdr
      xslt.Transform SRC TGT