Applying an XSLT transformation

Simple case

      SRC←'C:\Temp\source.xml'
      TGT←'C:\Temp\target.txt'
      XSL←'C:\Temp\stylesheet.xsl'

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

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

XslCompiledTransform replaces XslTransform

.Net 2.0 replaced the XslTransform class with XslCompiledTransform ([http://msdn.microsoft.com/en-us/library/system.xml.xsl.xslcompiledtransform.aspx MSDN article]), 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

The simple example above will not process the files attached to this article. The stylesheet processor rejects the [attachment:forecast.xsl stylesheet], because it contains a short [http://en.wikipedia.org/wiki/Document_Type_Definition DTD] section declaring an entity.

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. But this stylesheet comes from a trusted source and we want the stylesheet processor to accept it.

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.

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

      xrs←⎕NEW XmlReaderSettings
      xrs.ProhibitDtd←0

      rdr←XmlReader.Create XSL xrs

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

Author: StephenTaylor AttachInfo


CategoryDyalogExamplesDotNet CategoryDotNet