45 lines
1.4 KiB
Forth
45 lines
1.4 KiB
Forth
open System.Xml
|
|
|
|
type XmlDocument with
|
|
member this.Add element =
|
|
this.AppendChild element
|
|
member this.Element name =
|
|
this.CreateElement(name) :> XmlNode
|
|
member this.Element (name, (attr : (string * string) list)) =
|
|
let node = this.CreateElement(name)
|
|
for a in attr do
|
|
node.SetAttribute (fst a, snd a)
|
|
node
|
|
member this.Element (name, (text : string)) =
|
|
let node = this.CreateElement(name)
|
|
node.AppendChild(this.Text text) |> ignore
|
|
node
|
|
member this.Text text =
|
|
this.CreateTextNode(text)
|
|
end
|
|
|
|
type XmlNode with
|
|
member this.Add element =
|
|
this.AppendChild element
|
|
end
|
|
|
|
let head = [""; "X"; "Y"; "Z"]
|
|
|
|
let xd = new XmlDocument()
|
|
let html = xd.Add (xd.Element("html"))
|
|
html.Add(xd.Element("head"))
|
|
.Add(xd.Element("title", "RosettaCode: Create_an_HTML_table"))
|
|
let table = html.Add(xd.Element("body")).Add(xd.Element("table", [("style", "text-align:right")]))
|
|
let tr1 = table.Add(xd.Element("tr"))
|
|
for th in head do
|
|
tr1.Add(xd.Element("th", th)) |> ignore
|
|
for i in [1; 2; 3] do
|
|
let tr = table.Add(xd.Element("tr"))
|
|
tr.Add(xd.Element("th", i.ToString())) |> ignore
|
|
for j in [1; 2; 3] do
|
|
tr.Add(xd.Element("td", ((i-1)*3+j+1000).ToString())) |> ignore
|
|
|
|
let xw = new XmlTextWriter(System.Console.Out)
|
|
xw.Formatting <- Formatting.Indented
|
|
xd.WriteContentTo(xw)
|