html创建一个表格的步骤,如何创建一个HTML表格与TCL

这里是一个快速和肮脏的变种:

set data [list Name $a Age $b]

puts $outfile "\n

\n

[join [lmap {h _} $data {format

%s\n $h}] {}]

[join [lmap {_ d} $data {format

%s\n $d}] {}]\n\n\n"

这种解决方案不结垢,但是。这是一个好一点的脚本的HTML代码的创建,更容易使其常规:

set a Reynard

set b 12

set data [list Name $a Age $b]

set level 0

set html {}

proc indent n {

string repeat { } $n

}

proc structuralElement {name body} {

append ::html [indent $::level]\n

incr ::level

uplevel 1 $body

incr ::level -1

append ::html [indent $::level]$name>\n

}

proc valueElement {name value} {

append ::html [indent $::level]$value$name>\n

}

structuralElement html {

structuralElement body {

structuralElement table {

structuralElement tr {

foreach {h _} $data {valueElement th $h}

}

structuralElement tr {

foreach {_ d} $data {valueElement td $d}

}

}

}

}

set outfile [open "result_cell_pin.html" w+]

puts $outfile $html

close $outfile

但没有必要推倒重来。最简单的方法可能是使用tDOM。它看起来很凌乱,但当你习惯了它时非常流畅:

package require tdom

set doc [dom createDocument html]

set root [$doc documentElement]

dom createNodeCmd elementNode body

dom createNodeCmd elementNode table

dom createNodeCmd elementNode tr

dom createNodeCmd elementNode th

dom createNodeCmd elementNode td

dom createNodeCmd textNode t

set a Reynard

set b 12

set data [list Name $a Age $b]

$root appendFromScript {

body {

table {

tr {

dict for {h _} $data {th {t $h}}

}

tr {

dict for {_ d} $data {td {t $d}}

}

}

}

}

set outfile [open "result_cell_pin.html" w+]

puts $outfile [$doc asXML]

close $outfile

$doc delete

为什么要麻烦脚本呢?有很多原因,例如更容易做到,维护起来更容易。一个主要的优点是,当规格改变时适应脚本要容易得多。假设您现在在a和b中有多个值,您需要在表中的多行中显示该值。重写第一个代码示例是一件麻烦事,但重写tdom脚本是一件轻而易举的事情:

set a {Reynard Antimony Jones}

set b {12 16 3.7e09}

set data [list Name $a Age $b]

$root appendFromScript {

body {

table {

tr {

dict for {h _} $data {th {t $h}}

}

foreach d1 $a d2 $b {

tr {

td {t $d1}

td {t $d2}

}

}

}

}

}

不要害怕软件包。 Tcl是一种小内核语言,其中很多其他语言内置的功能都存储在软件包中。在语言X中使用高级文件处理函数和加载fileutil程序包以在Tcl中使用相同的命令之间没有真正的区别。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值