There are already a lot of XSLT processors out there, such as MSXSL, but without downloading and installing an application you can create your own processor using a couple of PowerShell lines and the System.Xml.Xsl namespace of .Net:
param ($xml, $xsl, $output) if (-not $xml -or -not $xsl -or -not $output) { Write-Host "& .\xslt.ps1 [-xml] xml-input [-xsl] xsl-input [-output] transform-output" exit; } trap [Exception] { Write-Host $_.Exception; } $xslt = New-Object System.Xml.Xsl.XslCompiledTransform; $xslt.Load($xsl); $xslt.Transform($xml, $output); Write-Host "generated" $output;
What does this code do:
- Declare command-line parameters $xml, $xsl, $output
- Check parameters are passed to the script
- Set a trap to display detailed error message in case an exception is raised
- Load the XSLT file
- Transform XML and write result to output file
FYI, this little bit of code is in cmdlet form in the PowerShell Community Extensions (Convert-Xml): http://pscx.codeplex.com. Along with the handy Format-Xml (and Format-Hex – think od, er octal dump).
Pingback: XSLT Transformations on XML Files with Undeclared Namespaces « devioblog
Pingback: cmd.net: tee, xslt « devioblog
Pingback: Processing structured text data with XSLT « hypercene
Pingback: XSLT with Powershell | Powershell Faq
Exception calling “Transform” with “2” argument(s): “Name cannot begin with the ‘.’ character, hexadecimal value 0x00.
Line 1, position 40.”
At line:1 char:1
+ $xslt.Transform($xml, $output);