Samuel Learning

  • 联系
  •  
  • 管理

文章分类(203)

  • 01 ASP/HTML(6)
  • 02 Script/CSS(16)
  • 03 C/C++
  • 04 XML(4)
  • 05 微软编程(26)
  • 06 J2EE(60)
  • 09 Linux(14)
  • 10 Database(27)
  • 11 报表打印
  • 12 打包安装(1)
  • 13 模式重构(2)
  • 14 系统架构
  • 15 敏捷开发(11)
  • 16 案例分析(30)
  • 17 Workflow(1)
  • 18 配置管理(1)
  • 19 项目管理
  • 20 英语(4)

新闻分类(52)

  • CXF学习
  • Hibernate学习(1)
  • iBatis学习(16)
  • Struts1学习(1)
  • Struts2学习(34)

.NET资源

  • adxmenu
  • C# Open Source
  • DNN Directory
  • M2Land
  • Windows Form FAQ
  • 中国DNN
  • 中国DNN联盟

Ajax

  • DoJo
  • GWT
  • JQuery
  • jquery autocomplete
  • jquery flexgrid
  • JQuery Form
  • jquery masked input
  • JQuery UI
  • jquery validation
  • Jquery 图表
  • jquery报表
  • jquery插件集合
  • Qooxdoo
  • Tibco GI
  • YUI
  • YUI-EXT
  • ZeroKode

Java开源

  • ABLE
  • Agile Tao
  • Ajax4JSF
  • Alfresco
  • AppFuse
  • Compiere
  • Equinox
  • Findbugs
  • Geronimo
  • Grails
  • Harmony
  • Hibernate论坛
  • JAG
  • Java开源大全
  • Java视线论坛
  • jBPM工作流
  • JSFTutorials
  • Nereide ERP
  • Ofbiz ERP
  • Opentaps ERP
  • operamasks
  • Petstore
  • Prototype.js
  • RIFE
  • Runa
  • SpringSide
  • Struts Menu
  • Sun Glassfish
  • Trails
  • YUI4JSF
  • 满江红

Mobile

  • Sencha

WEB资源

  • DHTML中心
  • DHTML参考手册
  • DHTML文档
  • EclipsePlugin
  • Firebug
  • GRO Clinux
  • jMaki
  • JSTL文档
  • LoadIcon
  • Openlaszlo
  • Struts Menu 展示
  • Web Test Tools
  • WebCtrs
  • Webdeveloper
  • 中国RIA开发者论坛

Workflow

  • E-Workflow
  • JBPM
  • OpenWFE
  • OSWorkflow
  • WFMC
  • Workflow Research

其他连接

  • confach
  • CPP
  • ejay
  • Giovanni
  • 丹佛
  • 交大e-learning
  • 交大研究生院
  • 可恶的猫
  • 天天@blog
  • 我的相册
  • 阿飞

大牛人

  • 32篇JBPM
  • David.Turing
  • HongSoft@业务集成
  • Joel
  • Koen Aers
  • Martinfowler
  • Raible Matt
  • Raible Wiki
  • Scott W.Ambler
  • Tom Baeyens
  • Uncle Bob
  • 一个世界在等待
  • 子在川上曰
  • 小布老师
  • 小明
  • 差沙
  • 徐昊
  • 江南白衣
  • 汪博士
  • 汪小金
  • 银狐999

开源软件

  • 2Bizbox ERP
  • CompiereCRM&ERP
  • EGW
  • Vtiger CRM
  • webERP

敏捷

  • Canoo
  • Cruisecontrol
  • DBUnit
  • EL4Ant
  • Extreme Programming
  • Fit
  • Fitnesse
  • JFrog
  • Liquibase
  • Maven
  • MockObjects
  • Selenium
  • Squish
  • xpairtise
  • XPlanner
  • XProgramming
  • 敏捷联盟

数据库

  • Oracle 中国
  • Oracle-ERP
  • Oracle在线社区

未归类

  • Aquarius Orm Studio
  • mambo建站系统
  • Oracle产品下载
  • 远程同步管理工具Capivara

经典框架

  • Apache Shale
  • formdef-struts
  • FreeMarker 主页
  • JBoss Seam
  • JSF 中心
  • JSF 入门应用
  • JSF中国
  • MyFaces官方
  • Spring 社区
  • Spring专业网站
  • Spring中文论坛
  • Spring参考手册
  • Spring官方网站
  • strecks-struts
  • Struts1
  • Struts2
  • Struts-layout
  • StrutsWiKi
  • Tapestry WIKI
  • Tapestry 官方
  • Tapestry4开发指南
  • Tapestry中文文档
  • Webwork2文档
  • Wicket

网络教程

  • Laliluna
  • RoseIndia
  • Sang Shin
  • Visualbuilder

著名站点

  • Buildix
  • Dev2Dev
  • IBM dev中国
  • InfoQ
  • ITPub
  • Java Eye
  • Java Research
  • JavaRead
  • JavaWorldTW
  • Matrix
  • PHP100
  • PHPX
  • SpringSideWiKi
  • TheServerSide
  • TWPHP
  • 中国工作流论坛

项目管理

  • 管理人网

最新评论

View Post

XSL变换学习笔记

前言:XSL事实上分为两部分,一部分是变换语言,另一部分是格式化语言。变换语言是将xml文档里面的内容重新编排。格式化语言达到类似CSS的功能。本文对变换语言做一个总结。

 

Part 1 谁能变换XML?

a.       IE浏览器

b.       Xalan + Xerces

 

其中使用第二种方式的命令行如下:

java org.apache.xalan.xslt.Process -in one.xml -xsl deeptree .xsl -out one.html

 

 

IE浏览器没有实现任何缺省的XSL规则,必须显式指定一条XSL规则,并用“/”指代根结点。

 

Part 2 XML文档中引用xslt样式表

<?xml-stylesheet type="text/xsl" href="deeptree.xsl"?>

 

 

Part 3 HelloWorld式的XSL

<?xml version=”1.0”?>
<xsl:stylesheet version=”1.0” xmlns:xsl=http://www.w3.org/1999/XSL/Transform>
       
<xsl:template match=”/”>
              
<HTML>
                     
<HEAD>
                            
<TITLE>A title</TITLE>
                     
</HEAD>
                     
<BODY>
                            A BODY.
                     
</BODY>
              
</HTML>
       
<xsl:template>
</xsl:stylesheet>

 

Part 4 保证子节点被正确处理,需要用

<xsl:apply-templates />

 

Part 5 得到结点值,需要用

<xsl:value-of />

 

Part 6 得到所有同名的节点值,需要用

<xsl:for-each>

 

 

Part 7 match属性的匹配模式

a.       匹配根结点

<xsl:apply-template match=”/”>

 

b.       匹配元素名

<xsl:apply-template match=”planets”>

 

c.       匹配子结点

<xsl:template match=”planet/name”>
    
<h3><xsl:value-of select=”.”/></h3>
</xsl:template>

 

d.       匹配元素的子代

<xsl:template match=”planet//name”>
    
<h3><xsl:value-of select=”.”/></h3>
</xsl:template>

 

e.       匹配属性

<xsl:template match=”mass”>
    
<xsl:value-of select=”@units”/>
</xsl:template>

f.        匹配注释

<xsl:template match=”comment()”>
    
<xsl:value-of select=”.”/>
<xsl:tempate>

 

g.       匹配文本节点

<xsl:template match=”text()”>
</xsl:template>

 

h.       匹配操作指令

<xsl:template match=”/processing-instruction”>
</xsl:template>

 

i.         使用或操作符

<xsl:template match=”Name|mass”>
  
<xsl:apply-templates/>
</xsl:template>

J.       使用“[]”判断

<xsl:template match=”PLANET[@COLOR=’BLUE’]”>
  
<xsl:value-of select=”Name”/>
</xsl:template>

 

Part 8 XParth是什么,XParth也是用来定位元素,非常强大,由轴,结点测试,谓词断言组成。例如:

<xsl:value-of select=”child::Name”/>

 

 

Part 9 把元素文本转换为别的元素的属性,使用{}.例如:

<planet name=”{name}” mass=”{mass}{mass/@units}” day=”{day}” />

 

Part 10 <xsl:element>创建新元素。例如:

<xsl:element name=”{@name}”>
       
<mass><xsl:value-of select=”mass”/></mass>
</xsl:element>

 

Part 11 <xsl:attribute>创建新属性。例如:

<planet>
       
<xsl:attribute name=”{name}”>
              
<xsl:value-of select=”@color”/>
       
</xsl:attribute>
</planet>

 

Part 12 <xsl:comment>生成注释。例如:

<xsl:comment>This was the <xsl:value-of select=”name” />element</xsl:comment>

 

Part 13 <xsl:text>生成文本。例如:

<xsl:text disable-output-escaping=”yes”>
       
&lt;planet&gt;
</xsl:text
>

 

Part 14 <xsl:copy>拷贝结点。例如:

<xsl:template match=”*|text()”>
       
<xsl:copy>
              
<xsl:apply-templates select=”*|text()”/>
       
</xsl:copy>
<xsl:template>

 

Part15 <xsl:sort>排列结点集。例如:

<xsl:apply-templates>
       
<xsl:sort select=”density” />
</xsl:apply-templates>

 

Part 16 <xsl:if>选择逻辑处理。例如:

<xsl:if test=”position()=last()”><xsl:element name=”HR”/></xsl:if>

 

 

Part 17<xsl:choose>类似Java的Switch操作。例如:

<xsl:choose>
       
<xsl:when test=”@color=’RED’”>
              
<B>
              
<xsl:value-of select=”name”/>
              
</B>
       
</xsl:when>
       
<xsl:when test=”@color=’BLUE’”>
              
<I>
              
<xsl:value-of select=”name”/>
              
</I>
       
</xsl:when>
       
<xsl:otherwise>
              
<pre>
                     
<xsl:value-of select=”.”/>
              
</pre>
       
</xsl:otherwise>
</xsl:choose>

 

Part 18 控制变换输出文档类型:

<xsl:output method=”html” indent=”yes” media-type=”text/xml”/>

method表明输出类型,xml,html或text;ident表明插入空格进行缩排;media-type指定MIME属性。

Part19 判断当前阶段深度

<xsl:if test="count(ancestor-or-self::*)=2">
                    xxxxx
</xsl:if>


Part20 判断是否有孩子:

<xsl:if test="count(Menu) > 0">xxx</xsl:if>


总结:W3C的参考资料,W3C XSLT规范(www.w3.org/TR/xslt),XPath规范(www.w3.org/TR/xpath)。

posted on 2005-10-24 11:05 MingIsMe 阅读(300) 评论(0)  编辑  收藏 所属分类: 04 XML

 
Powered by:
BlogJava
Copyright © MingIsMe