我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 网络编程 > ASP专区 > Asp安全/XML > HTML Just Passing Through
热门文章排行
热门文章排行 手推车”功能的实现(10-07)
八大法则防范ASP网站漏洞(10-23)
ASP教程十一、调试ASP脚本(10-23)
在JSP中访问数据库大全(10-23)
虚机服务中常见Asp.Net低级错误一览(03-21)
精采文章排行
精采文章排行 ASP.NET实现抓取网页中的链接(11-15)
ASP连接数据库的11种方法(11-10)
如何动态创建网页的RSS内容摘要(11-10)
ASP网站漏洞及入侵防范方法(11-10)
ASP自定义函数:对字符串正则替换(11-10)
技术专题推荐
网管论坛交流
 

HTML Just Passing Through 

作者:佚名   来源:一亩三分地   点击:   日期:2007-03-22

XML's many applications include one traditionally handled by HTML,
document source. Sometimes you want to include some HTML in your XML
source; particularly when styling your XML with XSL to HTML, you may
want some literal HTML in the output. In some cases, you'd just like to
include some well-formed mixed-content HTML in your XML, and not worry
too much about controlling its structure.

Writing explicit XSL rules for each HTML tag would be tedious and hard
to maintain. This week, I'll present a quick shortcut that allows you
to include arbitrary mixed-content HTML in your XSL stylesheet's output.

The XSL stylesheet's input includes some XML document, constrained by
(that is, validated against) a particular DTD. To define the element
containing the arbitrary HTML's content model, simply define content
models for each of the HTML elements you want to use and their
attribute lists. For example, define the <a?tag for hyperlinks like
this:

?!ELEMENT a (#PCDATA)*?BR>
?!ATTLIST a
href CDATA #IMPLIED
target CDATA #IMPLIED
name CDATA #IMPLIED?BR>
(This example is simplified, since it allows only unformatted text
inside the hyperlink text node.) Create a definition like this for each
HTML tag you wish to use. After you've defined the tags, define a
parameter entity that includes all of the HTML "pass-through" tags
you've defined:

?!ENTITY % htmlpassthru
"a|i|b|code|br|tr|td|th|img|font|em"?BR>
Anywhere in the DTD you want to include mixed-content HTML, use this
parameter entity in the DTD. For example:

?!ELEMENT HtmlHelpText (#PCDATA|%htmlpassthru;)*?BR>

Now for the stylesheet. Defining a separate rule for each possible
HTML element within a HtmlHelpText element would be extremely tedious.
Fortunately, a single rule can handle all such elements. Define an XSL
rule that matches the tag name AND uses <xsl:copy-of?to copy the
entire node (including attributes) to the output.

?!-- EXAMPLE XSL stylesheet --?BR>
?xsl:template
match="a|i|b|code|br|tr|td|th|img|font|em"?BR> ?xsl:copy-of select="."/?BR> ?/xsl:template?BR>
?!-- End EXAMPLE --?BR>
Any nodes in the XML input tree with these tags will be copied to the
output structure unmodified, attributes and all.

This technique is somewhat "quick-and-dirty". Choosing XHTML, which
reformulates HTML as XML and brings XML's extensibility and structure
control into the world of HTML, would be a better solution. But that's
a topic for another newsletter.

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·ASP中巧用Response属性 ·第六课:ASP脚本循环语句
·在 Web 页上使用条件数值格式 ·连接数据库查询手册(不仅仅适用于asp)
·警惕"给你的FileSystemObject对象加把锁" ·用ASP做全文检索

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。