CSS+DIV+XML+XSL小解
来源:互联网 发布:知乎 经历 爆菊 编辑:程序博客网 时间:2024/06/06 12:24
概要: 本文通过一个简单的例子来说明了CSS+DIV+XML+XSL的应用在文中我通过
DIV定义了一个上中下结构的的窗体,其中中间部分又被两个DIV分成了左右两部分我通过定义
一个XML文件来存储中间两部分的数据,通过两个XSL来表现数据,并用C#语法动态的加载数据
展现在了中间的DIV部分,这就是本文说明的一种表现层的数据于页面的分离。用这种机制大大
提高了页面布局的灵活性,你可以很方便的改变页面展现的内容(通过操作XML文件)你也可以
很方便的体现不同的数据展现(通过修改XSL),可以修改样式属性(通过修改CSS),您还可以
方便的改变整体的架构布局(通过模板),当然这些操作都是独立进行的,这才是它的精华,你
了解了吗?有人就要提问了 ,那我要是把页面分成50快,那我不是要写50个XSL来展现这样会不
会对网站的性能影响太的,哈哈,那我回大你 不会太大 基于XSL+XML的展现做的是很完美的,你
可以不用太担心(当然肯定会有损失,它不可能和静态页媲美的),再者我做两个XSL文件主要是
为了说明你可以把网页分块独立的特性,当你觉得没必要的时候你大可以只写一个XSL,在XSL里
完成DIV布局。
有人又要问那为什么用多个XSL那?你想想吧,这样当然是为了满足需要经常修改的特性了
你可以把主页面当成一个摸版,你想吧它关联到那就关联到那,这就实现了动态布局,是非常奇妙的
客户体验 哦,你想明白了吗?奇妙在什么地方,仔细想象吧
总结 :
结构1:单XML+单XSL(描述页面结构DIV)+单CSS(其中CSS对XSL文档用运)
优点:表现层数据表现分离,方便修改页面数据,样式
结构2:单XML+多XSL(描述单模块结构)+多CSS(对XSL和模板描述样式)+模板(描述页面结构DIV)
优点:表现层数据表现分离,方便修改页面数据,样式 ;结构于内容分离,方便修改内容
注意:本文是描述一个简单个结构2例子
1。首先,在阅读本问之前请先自行熟悉XML,XSL,CSS相关知识,应为这些知识网上一搜一大堆我就
不罗嗦了
2。我先给出本文的XML文档(xml.xml)
<?xml version="1.0" encoding="utf-8" ?>
<documents>
<document1>
<left>
<litem>我的连接</litem>
</left>
<left>
<litem>我的连接</litem>
</left>
<left>
<litem>我的连接</litem>
</left>
<left>
<litem>我的连接</litem>
</left>
<left>
<litem>我的连接</litem>
</left>
<left>
<litem>我的连接</litem>
</left>
<left>
<litem>我的连接</litem>
</left>
</document1>
<document2>
<right>
<litem>让我们开始神秘的CSS+DIV+XML+XSL之旅吧</litem>
</right>
<right>
<litem>让我们开始神秘的CSS+DIV+XML+XSL之旅吧</litem>
</right>
<right>
<litem>让我们开始神秘的CSS+DIV+XML+XSL之旅吧</litem>
</right>
<right>
<litem>让我们开始神秘的CSS+DIV+XML+XSL之旅吧</litem>
</right>
<right>
<litem>让我们开始神秘的CSS+DIV+XML+XSL之旅吧</litem>
</right>
<right>
<litem>让我们开始神秘的CSS+DIV+XML+XSL之旅吧</litem>
</right>
<right>
<litem>让我们开始神秘的CSS+DIV+XML+XSL之旅吧</litem>
</right>
<right>
<litem>让我们开始神秘的CSS+DIV+XML+XSL之旅吧</litem>
</right>
</document2>
</documents>
本XML文档主要给出了我用DIV做的内容页中的左右页面中的内容列表,分别为<document1>和<document2>
3。我们来给出显示用的两个XSL文档(xslLift.xsl,xslRight.xsl)
3。1。xslLift.xsl(表现左边DIV中的内容的XSL文件)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<!--
This is an XSLT template file. Fill in this area with the
XSL elements which will transform your XML to XHTML.
-->
<xsl:for-each select="documents/document1/left">
<div width="100%" border="0">
<ul>
<li>
<a href="#" style="padding-top:40px">
<xsl:value-of select="litem"/>
</a>
</li>
</ul>
</div>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
3。2 xslRight.xsl(表现右边DIV中的内容的XSL文件)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<!--
This is an XSLT template file. Fill in this area with the
XSL elements which will transform your XML to XHTML.
-->
<xsl:for-each select="documents/document2/right">
<div width="100%" border="0">
<ul>
<li>
<a href="#" style="padding-top:40px">
<xsl:value-of select="litem"/>
</a>
</li>
</ul>
</div>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我也就不多说了,主要用到了<xsl:for-each select="documents/document2/right"></xsl:for-each>结构
来读取XML中的内容
4。下面我们介绍关键的技术:
先来看段代码:
public StringWriter getHTMLstrWrite(string xmlPath, string xslPath)
{
//get the xsl as a string
StreamReader xslr = new StreamReader(xslPath);
string xslStr = xslr.ReadToEnd();
//get the xml as a string
StreamReader sr = new StreamReader(xmlPath);
string inStr = sr.ReadToEnd();
// Load the style sheet.
StringReader xslReader = new StringReader(xslStr);
XmlReader xslRdr = XmlReader.Create(xslReader);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xslRdr);
//Load the xml
StringReader strReader = new StringReader(inStr);
StringWriter strWriter = new StringWriter();
XmlReader reader = XmlReader.Create(strReader);
// Transform
xslt.Transform(reader, null, strWriter);
return strWriter;
}
现在我来给大家解释
1,string xmlPath, string xslPath分别是我们要给出的参数 也就是你的XML和XSL的文件路径
2,StreamReader xslr = new StreamReader(xslPath);
string xslStr = xslr.ReadToEnd();
读取XSL文件到xslStr中
3, StreamReader sr = new StreamReader(xmlPath);
string inStr = sr.ReadToEnd();
读取 XML文件到inStr中
4 StringReader xslReader = new StringReader(xslStr);
XmlReader xslRdr = XmlReader.Create(xslReader);
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(xslRdr);
这是最重要的一步,通过XslCompiledTransform 来载入XSL文件并提供关联XML文件的功能
有关详细解释查看帮助
5,StringReader strReader = new StringReader(inStr);
StringWriter strWriter = new StringWriter();
XmlReader reader = XmlReader.Create(strReader);
载入XML文档没什么可说的
6, xslt.Transform(reader, null, strWriter);
就想4步所说的 提供关联XML和XSL文档的功能(是动态的哦,会很有用)
现在我们准备好了一切,马上我们开始够建主页面吧!(Default.aspx)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<link rel="stylesheet" rev="stylesheet" href="css.css" _fcksavedurl=""css.css"" _fcksavedurl=""css.css"" type="text/css" media="all" title="001" />
</head>
<body>
<div id="header">header</div>
<div id="content1">
<div id="right" runat="server">
</div>
<div id="left" runat="server">
</div>
</div>
<div id="footer">footer</div>
</body>
</html>
有人看了就要问(大哥别开玩笑了这也能当主页面 你玩那吧你)
哈哈 ,您别着急啊 你看到了我一共用了五组DIV其中第一组是也头最后一组是页尾
现在让我们看看中间吧 中间部分用一个DIV里嵌套两个DIV的形式出现
<div id="content1">
<div id="right" runat="server">
</div>
<div id="left" runat="server">
看明白了吗这就是我们内容部分的架构,有的人可能会很迷糊
但是您如果熟悉CSS您将不会再有任何疑问了
好了让我们来看看CSS文件把(css.css)
body{
background:#999;
text-align:center;
color: #333;
font-family:arial,verdana,sans-serif;
}
#header{
width:776px;
margin-right: auto;
margin-left: auto;
padding: 0px;
background: #EEE;
height:60px;
text-align:left;
}
#content1
{
WIDTH:776px;
MARGIN-RIGHT: auto;
margin-left : auto;
padding : 0px;
background:#ffffff;
border-left:1px solid #9662A9;
border-right:1px solid #9662A9;
text-align:left;
height:303px;
overflow: hidden;。//益处自动隐藏
}
#right
{
FLOAT:right;//在左侧浮动
width:590px;
text-align:left;
height:303px;
}
#left
{
text-align:center;
padding-top:6px;
height:303px;
}
#footer
{
clear:both;
width:776px;
margin-right: auto;
margin-left: auto;
padding: 0px;
background: #EEE;
height:60px;
}
.text{margin:0px;padding:20px;}
不用多说了吧 自己看看吧
下载本例DEMO:http://download.csdn.net/user/desertFishToHeaven/
(名为CSS+DIV+XML+XSL之旅)
- CSS+DIV+XML+XSL小解
- xml+xsl + css 笔记
- XML、XSL、CSS实战
- xml+xsl生成html的方法
- XML (3) CSS and XSL
- XML CSS样式表 XSL
- div+css布局
- DIV+CSS布局
- 什么是CSS+DIV
- div+css布局
- xml ,xsl,css 三种关系区别
- DIV+CSS 布局入门
- DIV+CSS网页布局
- DIV+CSS学习- 1
- XML:XML文件的显示——CSS和XSL
- XML介绍之XML使用CSS与XSL修饰
- 何不试试使用xsl+jsp+xml+taglibs来实现web显示层!
- 用DOMINO6.5,XML+XSL+javascript实现任务的统计
- redirect :: String -> IO Blog
- 超越梦想
- 开发人员行走Unix的随身四艺
- 多文件上传
- DjVu/PDF/TIFF-----wiki
- CSS+DIV+XML+XSL小解
- Expert Service-Oriented Architecture in C# 2005, Second Edition by Jeffrey Hasan
- Tomes of Delphi: Win32 Core API Windows 2000 by John Ayres
- Advanced C# Programming by Paul Kimmel
- PPT相对路径设置解决
- Helix DNA Client Code Branches & Targets
- 2006高端IT技术图书点评(首发《中华读书报》)
- Advanced Programming in the UNIX Environment (2nd Edition)
- 15所名校计算机专业之特色分析