Differences between revisions 3 and 5 (spanning 2 versions)
Revision 3 as of 2008-06-20 13:36:07
Size: 2012
Comment:
Revision 5 as of 2008-06-20 13:45:55
Size: 2128
Comment:
Deletions are marked like this. Additions are marked like this.
Line 20: Line 20:
.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. .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.
Line 22: Line 22:
{{{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. '''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.
Line 27: Line 27:
The simple example above will not process the files attached to this article. The stylesheet processor rejects the stylesheet, because it contains a short [http://en.wikipedia.org/wiki/Document_Type_Definition DTD] section declaring an entity.  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.
Line 29: Line 29:
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.  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.
Line 47: Line 47:

Author: StephenTaylor
[[AttachInfo]]
----
CategoryDyalogExamplesDotNet CategoryDotNet

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

XsltTransform (last edited 2015-04-05 01:30:14 by PierreGilbert)