加载的就是对应名称为 format 的模块数据:

[%TITLE%]

&%format%&

这里我把这个模板节点定义成 加载控制全局的html源了,再看这个标签topdata:

{%TOP_MESS%}

如果这个节点被加载,生成的文件里面会将topdata节点替换成如上的html文档模板,这就是模块

这里的模块也可以是xml文档,重复加载模块,也可以是终数据.

当这些还有模块节点的xml模板被加载以后,就被程序识别,对应的加载成html二级模块,然后提出我们的"仿xml 数据"标记中的数据,正则替换对应的节点,生成文件,这里的"仿xml数据"是这种方式的数据:

{%TITLE%}{%/TITLE%}

{%STYLE%}default{%/STYLE%}

{%site_top%}{%/site_top%}

{%format_two%}

{%/format_two%}

{%site_footer%}{%/site_footer%}

这里,您可能马上理解了我说的"仿xml数据"了,这种加载数据的方式也是xml分析节点,然后直接正则替换,当然可以include文件的(asp,php).

好了,现在您想必概念已经很清楚了,(不清楚的话重新看上面的话,或看如下的例子)

我就举个举个简单的例子说明一下(format_index.xml):

{%site_top%}

{%home_bigflash%}

{%format_two%}

{%site_footer%}

模块:

//format,就是最上面的那个,不列举了

//home_bigflash

//format_two

(&format_two&)

//site_footer

(&site_footer&)

差不多应该加载的模板和模块就这点吧(都是可以重用的.)

现在是程序处理:

'根据输入判断输出是名称还是数据

Function geturlxml(outfile,mode)

geturlxml=False

If outfile="" Then Exit Function

Dim tab

Select Case killint(mode,0,0,2)

Case 0:tab="szd_tpl"

Case 1:tab="szd_content"

End Select

Set rs=conn.execute("select ["&tab&"] FROM szd_asp where [szd_link]='"&outfile&"'")

If rs.eof And rs.bof Then

Exit Function

else

geturlxml=rs(tab)

End If

End Function

'提取include文件到原始的数据项中

Function getincludefile(x)

Dim regxml,html

html=""

Set regxml=new regexp

regxml.ignorecase=True

regxml.global=True

regxml.pattern="()"

Dim Matches,Match

Set Matches = regxml.Execute(x)

For Each Match in Matches

html=html&match.value

Next

getincludefile=html

End Function

'获取模板项,先判断输出,返回值是 html 形式的模板,参数是模板的名称

Function gettpl(url)

Dim mudule_file,xml_file,asp_file

xml_file=url

asp_file=gettpldata(xml_file,0)'由模板名称获取模板的内容

Dim loadxml,parsexml,nodes,node

Set loadxml = Server.CreateObject("MSxml2.DOMDocument")

loadxml.async=false

parsexml=server.mappath("../"&gettpldata(xml_file,10)&xml_file)'装载本地的xml文档,先到数据库取到路径

loadxml.load parsexml

Set nodes = loadxml.selectNodes("//*")

for each node in nodes

asp_file=insertaspinhtml(asp_file,gettpldata(node.nodename,1),node.nodename)'加载模块到模板,输出html模板

Next

gettpl=asp_file

End function

'匹配模板中的数据项

'把data中的数据传入html文件当中去

Function tpltodata(html,data)

Dim regxml

Set regxml=new regexp

regxml.ignorecase=True

regxml.global=True

regxml.pattern="({%)([a-zA-Z][A-Za-z0-9_]{2,60})(%})(.[^\[]*)({%/)\2(%})"

Dim Matches,Match

Set Matches = regxml.Execute(data)

For Each Match in Matches

html=Replace(html,"{%"&regxml.Replace(match.value,"$2")&"%}",regxml.Replace(match.value,"$4"))

Next

tpltodata=html

End Function

'geturlxml 传入参数模板名称,返回模板的内容,失败的时候返回 null

Function geturlxml(outfile)

geturlxml=Null

If outfile="" Then Exit Function

Set rs=conn.execute("select [szd_tpl] FROM szd_asp where [szd_link]='"&outfile&"'")

If rs.eof And rs.bof Then

Exit Function

else

geturlxml=rs("szd_tpl")

End If

End Function

public Function gettpldata(url,mode)

'Set rs=server.CreateObject("server.adodbrecordset")

If Len(url)<1 Then Exit Function

Dim szd_keytpl

Select Case mode

Case 0:Set rs=conn.execute("select [szd_content] from szd_tpl where [szd_link]='"&url&"'")

Case 10:Set rs=conn.execute("select [szd_url] from szd_tpl where [szd_link]='"&url&"'")

Case 1:Set rs=conn.execute("select [szd_content] from szd_keytpl where [szd_key]='"&url&"'")

End Select

If Not(rs.eof And rs.bof) Then

szd_keytpl=rs(0)

Else

szd_keytpl="

{%nodefined%}"

End If

gettpldata=szd_keytpl

End Function

'加载标记的模块到 xml 格式的模板中,输出html格式的模板,asp:xml格式模板,html:导入的模块,xmls:当前标记

Function insertaspinhtml(asp,html,xmls)

Dim regxml,temp,temps,tempasp,tempasp_e

Set regxml=new regexp

regxml.ignorecase=True

regxml.global=True

regxml.pattern="(\)(.[^\[]*)(\)"

temp=regxml.Replace(asp,"$2")

Dim Matches,Match

Set Matches = regxml.Execute(asp)

For Each Match in Matches

html=Replace(html,"(&"&xmls&"&)",regxml.Replace(match.value,"$2"))

asp=Replace(asp,Match.Value,html)

next

temps=Replace(html,"(&"&xmls&"&)",temp)

insertaspinhtml=asp

End Function

Function update_aspfile(id)

Dim update_aspfile_return

update_aspfile_return=False

id=killint(id,0,0,14)

If id=0 Then Exit Function

Set rs=conn.execute("select [szd_level],[szd_content],[szd_tpl],[szd_link] from szd_asp where id="&id&"")

If rs.eof And rs.bof Then Exit Function

Dim tpl_level,tpl_content,tpl_tpl,html_content,asp_file_now

tpl_level=rs(0)

tpl_content=rs(1)

tpl_tpl=rs(2)

asp_file_now=rs(3)

If Len(tpl_tpl)<4 Or tpl_level=1 Or IsNull(tpl_tpl) Then

html_content=tpl_content

Else

html_content=gettpl(tpl_tpl)

If Not isnull(html_content) Then

html_content=getincludefile(tpl_content)&tpltodata(html_content,tpl_content)

'response.write(""&server.htmlencode(getincludefile(tpl_content))&"")

Else

html_content=tpl_content

'response.write(""&server.htmlencode(html_content)&"")

End If

End If

If writeto("../",asp_file_now,html_content,2) Then update_aspfile_return=True

update_aspfile=update_aspfile_return

End Function

%>

生成文件:

运行代码框

[Ctrl A 全部选择 ]

这里,我的模块用了div,是利于样式表的使用.

主要思路如图:

其他的就不再说了,不知道说明白了.

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

相关文章

相关视频

网友评论

文明上网理性发言,请遵守 新闻评论服务协议我要评论

立即提交

专题推荐独孤九贱-php全栈开发教程

全栈 100W+

主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门

玉女心经-web前端开发教程

入门 50W+

主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门

天龙八部-实战开发教程

实战 80W+

主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习

php中文网:公益在线php培训,帮助PHP学习者快速成长!

Copyright 2014-2020 https://www.php.cn/ All Rights Reserved | 苏ICP备2020058653号-1

php 模板 下载xml,模板用xml的思路_PHP相关推荐

  1. html5常用模板下载网站

    html5常用模板下载网站 开创者素材.站长素材.模板之家 推荐葡萄家园素材网,他们网页模板栏目有个HTML模板,很多静态源码.应该是你所需要的. html静态页面模板 还是服饰素材啊 朋友 设计云 ...

  2. POI实现Excel模板下载

    后台代码 /*** 模板下载* * @param request* @param response* @throws IOException*/@ResponseBody@RequestMapping ...

  3. js中excel模板下载

    部分代码: <button class="btn" type="button" id="templateDownload">模板 ...

  4. 推荐几个无需注册免费的PPT模板下载网站

    PPT汇: https://www.ppthui.com/ ​超优质的纯免费PPT模板下载站,种类繁多无需注册直接下载,推荐 OFFICEPLUS: 微软出品的PPT模板网站,质量超高 比格PPT: ...

  5. 50套html网站模板,涵盖很多行业,各种类型html网站,各种行业html网站模板下载

    50套html网站模板,涵盖很多行业,各种类型html网站,各种行业html网站模板下载 所以模板都在共享文件里面QQ群 139639813 ,快下载吧.

  6. Mogrt动态标题模板 复古动画师专业全屏标题PR模板下载

    Mogrt动态标题模板 复古动画师专业全屏标题PR模板下载 这个模板将帮助您创建具有复古和垃圾外观的完美动画标题.这个模板包括8个不同的动画,这将使你的下一个项目感觉真棒.该项目易于使用,甚至可以由初 ...

  7. ppt模板下载keyppt.cn

    ppt模板下载 ppt模板下载 如何制作ppt ppt背景 ppt是什么 ppt下载 免费ppt模板 动态ppt模板 ppt模板免费下载 商务ppt模板 ppt模板下载 免费完整版 自我介绍ppt模板 ...

  8. Spring Boot 实现excel 批量导入数据(模板下载 ->数据导入->导入失败表格下载)

    批量导入数据以用户为例[不贴数据库操作代码,都是简单的插入和查询操作自己写] 1 导入依赖 2 批量导入模板下载 3 批量导入数据 准备工作 实现代码 测试接口 4 下载导入失败表格 5 实体类 6 ...

  9. php 模板 下载xml,模板用xml的思路

    前段时间,一直比拟关心php的模板技巧的我,接到了客户的请求:全站利用模板技巧,可以把持多模板,这个项目请求有强盛的后台,重要是多模板,难点就在模板的导进和辨认并且天生上,我仔细考核了php的模板核心 ...

最新文章

  1. mysql商品管理系统总结_Mysql管理总结
  2. 直播源码:直播+内容营销新趋势
  3. 017-平衡二叉树(三)
  4. 数据结构-js实现栈和队列
  5. 二分大法| 求X的开方,结果一个公式解决! (力扣69.X 的平方根)
  6. 四节传送带plc梯形图_自动控制系统的大脑--PLC
  7. 【BZOJ4543】Hotel加强版【神仙树形dp】【长链剖分】
  8. 免费SSL申请:(各大服务商资源综合)- 免费获取
  9. 数据结构与算法之-----栈的应用(二)
  10. MOne︱基于词包的无监督多主题得分 练习题
  11. Swift 2.x 升为 swift 3后语法不兼容问题适配
  12. 面试题 17.09. 第 k 个数
  13. C++ lock 加锁,解锁
  14. php里无法找到该网页,thinkphp搭建网站后端,入口文件找不到(无法加载)
  15. python词组语义相似度_语义相似度
  16. 加工奶制品的生产计划
  17. JAVA删除pdf空白页_如何从iText中的PDF中删除空白页面
  18. 区块链开发之Metamask使用调研
  19. 【DB宝3】在Docker中使用rpm包的方式安装Oracle 19c
  20. 2012暑期川西旅游之第八天(青城山-成都)

热门文章

  1. 华为日历怎么显示一月_华为P20使用感受
  2. 论文阅读 Safe Local Exploration for Replanning in Cluttered Unknown Environments
  3. Java用于取得当前日期相对应的月初,月末,季初,季末,年初,年末时间
  4. 创建一个Customer类,类中的属性有姓名(name)、年龄(age)、性别(gender),每一个属性分别有get/set方法。然后创建两个customer对象:张立、18、女和王猛、22、男。把
  5. 【51单片机实例】智能小车(一)--------小车的前进、后退和停止
  6. Navicat连接腾讯云服务器的MySQL
  7. Linux spi驱动框架之执行流程-nuc970-att7022
  8. python实现小程序_python实现小程序
  9. php判断bmi值,孕期你的身体质量BMI值达标了没?根据公式来测测吧
  10. 单点登录常见解决方式和阿里云短信服务