2009-06-10

删除一对XML标签内的文字2

LiveCycle Designer不提供一次删除所有的javascript代码,要清空多个xdp文件内的脚本得使用正则表达式来将<script contentType="application/x-javascript">和</script>标签之内的文字替换为空,也就是删除<script contentType="application/x-javascript">和</script>标签内的脚本。

我的尝试:
:%s/\(<script \a*="\a*\/x-javascript">\)\([^<]*\)\(<\/script>\)/\1\3/

或者
:%s#\(<script contentType="application/x-javascript">\)[^<]*\(</script>\)#\1\2#

用sed来处理:
sed -rn 's#(<script contentType="application/x-javascript">)[^<]*(</script>)#\1\2#g;p' myfile.xdp

如果脚本有多行,需要处理换行的情况:
%s#\(<script contentType="application/x-javascript">\)\([^<]*\n\)*[^<]*\(</script>\)#\1\3#g

或者用awk来处理换行的情况:

awk -v RS="<script contentType=\"application/x-javascript\">" 'NR!=1{gsub("^[^<]*</script>","</script>")}{printf NR==1?$0:RS""$0}'  myfile.xdp

Update: (2009-06-24 )

要干净删除已有的脚本代码,仅仅删除<script>标签内的代码还不够。这样会留下很多空的不包含脚本的event标签,当再次添加脚本文件时,如果新生成的event标签连同script标签在原来那个标签之后,那么代码将不会在design view下显示出来,而只在XML source中显示出来,在执行时,代码仍会被执行。也就是说,一个不包含任何代码代码的form的xml source里面应该有不会有event标签出现。

没有评论:

发表评论