XML在更多的时候只是一种数据文件,利用XML我们可以使内容与样式分离
如果我们将XML文件比作结构化的原料的话。那么XSL就好像"筛子"与"模子",
筛子选取自己需要的原料,这些原料再通过模子形成最终的产品。
这个模子大致是这样:我们先设计好表现的页面,再将其中需要从XML中获取数据来填充内容的部分去掉,然后用XSL语句从XML中筛出相关的数据来填充。
XML在展开时是一个树形结构,将树形结构中自定义标记称为节点,节点之间存在父子、兄弟关系,要访问其中的结点从根结点就要以"/"来层层进入。
三个文件。(blue.xml blue.xsl blue.css )拷到本地同一目录下。
怎样从XML里提取相关的数据,就要用到XSL提供的模式化查询语言。就是通过相关的模式匹配规则表达式从XML里提取数据的特定语句,即上面所说的"筛子"。
blue.xml:
[xhtml] view plaincopy
<?xml version='1.0' encoding='GB2312'?>
<?xml:stylesheet type='text/xsl' href='blue.xsl'?>
<Topic>
<Issue>
<TopicId>000001</TopicId>
<UserName>ycoe12</UserName>
<RankName>超级用户</RankName>
<TopicName>[JSP]Servlet中线程的问题</TopicName>
<DateTime>2005-12-26 01:03:44</DateTime>
<ReplyNum>2</ReplyNum>
<ReadNum>68</ReadNum>
<Content>请问一下怎样实现在Servlet里使用线程。比如用两线程,让一个线程与另一个线程通讯。。。
方法: implements Runnable 。生成后马上让它sleep。
通过检测HttpSession来判断另一个线程的进程的。
</Content>
</Issue>
<Replys>
<Reply>
<TopicID>000001</TopicID>
<UserName>红色黑客</UserName>
<RankName>经典杀手</RankName>
<ReplyID>0001</ReplyID>
<Content>这个应该用线程同步吧??</Content>
<DateTime>2005-12-26 13:22:15</DateTime>
</Reply>
<Reply>
<TopicId>000001</TopicId>
<UserName>ycoe12</UserName>
<RankName>超级用户</RankName>
<ReplyID>0002</ReplyID>
<Content>不是,简单地说就是用一个线程完成后去通知另一个线程。。。不是,简单地说就是用一个线程完成后去通知另一个线程。。。不是,简单地说就是用一个线程完成后去通知另一个线程。。。</Content>
<DateTime>2005-12-26 20:41:51</DateTime>
</Reply>
</Replys>
</Topic>
blue.xsl:
[xhtml] view plaincopy
<?xml version="1.0" encoding="GB2312"?>
<!--
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="gb2312" version="4.0"/>
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="text()" >
<xsl:value-of/>
</xsl:template>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=GB2312"/>
<title><xsl:value-of select="Topic/Issue/TopicName"/></title>
<link REL='Stylesheet' HREF="../../../blue.css" mce_HREF="blue.css" TYPE='text/css'/>
</head>
<body>
<div id="divFrame">
<div id="divTitle">
<span id="spanTitleLeft"><xsl:value-of select="Topic/Issue/TopicName"/></span>
<span id="spanTitleRight">作者:<xsl:value-of select="Topic/Issue/UserName"/>| <xsl:value-of select="Topic/Issue/RankName"/>| 发表时间:<xsl:value-of select="Topic/Issue/DateTime"/></span>
</div>
<div id="divMain">
<xsl:apply-templates select="Topic/Issue/Content" />
</div>
<div id="divReply">
<xsl:apply-templates select="Topic/Replys"/>
</div>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="Replys" >
<xsl:for-each select="Reply" >
<div>
<div id="replyPerson">回复人:<xsl:value-of select="UserName"/>| <xsl:value-of select="RankName"/>|</div>
<div><xsl:apply-templates select="Content" /></div>
<div>发表时间:<xsl:value-of select="DateTime"/></div>
</div>
</xsl:for-each>
</xsl:template>
<xsl:template match="Content">
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
blue.css:
[xhtml] view plaincopy
body
{
text-align:center
background-color:#ffffff
}
div
{
font-family:Verdana
text-align:left
}
#divFrame
{
background-color:#CCCCCC
width:95%
padding:8px
}
#divTitle
{
background-color:#F7F3F7
border:1px solid black
width:100%
font-size:16px
font-weight:bold
line-height:30px
color:#0051A5
padding-left:10px
}
#divMain
{
font-size:14px
margin-top:5px
border:1px solid black
padding:10px
background-color:white
}
#divReply
{
background-color:#ffffff
margin-top:5px
margin-bottom:5px
border:1px solid black
width:100%
font-size:9pt
padding:10px
letter-spacing:2px
line-height:24px
}
#spanTitleLeft
{
float:left
}
#spanTitleRight
{
font-weight:normal
font-size:12px
float:right
padding-right:10px
}
#replyPerson{
border-bottom:1px solid #0066cc
background-color:#f1f5fa
}
选择模式:
<xsl:for-each>、<xsl:value-of>和 <xsl:apply-templates>
匹配模式:
<xsl:template>
<xsl:template match="Replys" >
<xsl:for-each select="Reply" >
<div>
<div id="replyPerson">回复人:<xsl:value-of select="UserName"/>| <xsl:value-of select="RankName"/>|</div>
<div><xsl:apply-templates select="Content" /></div>
<div>发表时间:<xsl:value-of select="DateTime"/></div>
</div>
</xsl:for-each>
</xsl:template>
简单说下这段:
XSL模板将XSL的设计细化成一个个模板(块),最后再将这些模板(块)组合成一个完整的XSL;好比船与集装箱,我们不是将所有的货物一件件地堆起来,而是装在各自的集装箱中,然后再在船上将这些集装箱堆放起来。这种方法可以使你先从整体上考虑整个XSL的设计,然后将一些表现形式细化成不同的模块,再具体设计这些模块,最后将它们整合在一起,这样,将宏观与微观结合起来,符合人们条理化、规范化要求。
装集装箱--书写模板(块):<xsl:template>
<xsl:template match="Replys">
match ── 确定什么样的情况下执行此模板。就是标记的名字;
其中最上层模板必须将match设为"/"。
<xsl:template>用match属性从XML选取满足条件的节点,在真对这些特定的节点形成
一个特定输出形式的模板。
<xsl:for-each select="Reply">循环选择。
select :确定在此上下文环境中应执行什么模板,即选取用<xsl:template >标记建立的模板(块)。
<xsl:value-of>直接输出选择的。
调用模板(块):<xsl:apply-templates select="Content" />
调用xsl最后一段。
<xsl:template match="Content">
<xsl:apply-templates />
</xsl:template>
注:XSL可以把相同的数据(xml)以不同的数据形式和样式(css)提交给终端客户
你是加自动人吗(电脑对站的)按+1 就行了不是在数字建的+啊 是在删除建的旁边=的上面的那个 要是不能的话,你现在去下载个电脑对站的机器人补丁预先通知,~~~~本人不玩百度的积分游戏了,所以我几个号里的积分将在3.8晚上8点以后开始赠给个位运气好的朋友们,所有人都可以来参加.靠摇筛子决定赠分数的多少和楼数~~指点 地点 地区-浙江-宁波
前言:半年前,在公司接到了一个需求,类似于qq游戏中的大富翁,当初我对于游戏引擎还是完全处于小白状态,但是需求又不能不接,那就硬着头皮上吧。技术选型上,我首先放弃了游戏引擎,谁让我还是小白呢,项目上线时间又紧。现学现卖,万一中途出了什么岔子,那不是前功尽弃。所以最后我还是选择了最基本的css3和js去实验这个效果,虽然难度还是挺大,但毕竟这块至少咱不是小白啊。
初始化:
任何游戏和h5页面都会去做初始化这件事。既然这个小人物要在这张地图上跑来跑去,那么这张地图上的所有区块的位置我肯定得先知道。所以我做了一件很傻的事情,就是在每个区块上我都去加了一个div。虽然这种做法挺傻,但是效果还是很明显的。
步数问题:
接下来就是比较头疼的问题了,既然都知道了地图上所有区块的位置,那怎么让小人物能乖乖的根据筛子的点数,有规则的走起来,走完一圈后又该如何重置这个步数问题,不急不急,先让我理一下思路。
总结: 由于特殊原因,具体的活动链接我就不放了。相对来说,这个活动还是不难的,相信大家稍微动动大脑,都可以做出来。