オリジナルの XML ではなく, XSLT で変換済みの XML ファイルに対して LINQ to XML したい場合があると思います。
let transform (xslt : string) (document : XDocument) = let transformer = XslCompiledTransform () transformer.Load (xslt) let builder = StringBuilder () use writer = XmlWriter.Create (builder, transformer.OutputSettings) use reader = document.CreateReader () transformer.Transform (reader, writer) builder.ToString () |> XDocument.Parse
通常だと XDocument.Load xml |> fun doc -> doc.Descendants ...
とするところを XDocument.Load xml |> transform xslt |> fun doc -> doc.Descendants ...
のような感じでパイプして使うことができます。