SATOXのシテオク日記

~ふもっふ、ふもふも~

C#でXMLにXSLTをかます

以前は結構使う機会があったと思うのですが、最近はどうだろう。XSL Transformations(XSLT)をC#で行いたい機会があって調べたのでメモ。

ちなみに、XSLTとはXMLに記述されたデータをスクリプトなどなしに思い通りの出力形式に変換する仕組み。 必要な情報だけ取り出したり、ページングするためにデータ範囲を決めたりして、主にHTMLに変換したりします。

以下、XMLXSLTを入力としてXMLを出力する関数のサンプル。

static void TransformXslt(String inputXmlFilePath, String inputXsltFilePath, String outputXmlFilePath)
{
     // xmlの読み込み
     var xmlDoc = new XmlDocument();
     xmlDoc.Load(inputXmlFilePath);

     // xsltの読み込み
     var xslt = new XslCompiledTransform();
     var xsltSettings = new XsltSettings() {
        EnableDocumentFunction = true,  // XSLT有効
        EnableScript = true,             // スクリプトブロック有効
     };
     xslt.Load(inputXsltFilePath, xsltSettings, null);

     // 出力XML Writer生成
     var writerSetting = new XmlWriterSettings() {
        Indent = true,            // インデント有効
        IndentChars = "     ", // インデントタブ文字列
     };
     using (var writer = XmlTextWriter.Create(outputXmlFilePath, writerSetting)) {
        // xmlをxsltで変換
        xslt.Transform(xmlDoc, null, writer);
     }
}

www.w3schools.com