加载中 ... ...
十一月 12 2008

xml及SiteFactory™标签常用xslt元素简介【完整模式查看】

作者:山顶洞羊 1017 2008-11-23 22:23:19更新

[NextPagexml简介]
xml简介
网上关于XML的介绍和教程是很多的。本节的目的是介绍XML一些最为重要的东西,使您对其有个大概的快速的了解,以便进行相关内容的学习(比如XSLT,通过其他语言或工具读取XML数据),或对XML本身进行更深入的研究。这里假定您对 HTML/XHTML 有基本的了解。

什么是 XML?

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签
  • XML 被设计为具有自我描述性
  • XML 是 W3C 的推荐标准


XML 与 HTML 的主要差异

  • XML 不是 HTML 的替代
  • XML 和 HTML 为不同的目的而设计
  • XML 被设计为传输和存储数据,其焦点是数据的内容
  • HTML 被设计用来显示数据,其焦点是数据的外观
  • HTML 旨在显示信息,而 XML 旨在传输信息


XML 的语法
XML 的语法规则很简单,且很有逻辑。这些规则很容易学习,也很容易使用。

  • 所有 XML 元素都须有关闭标签
  • XML 标签对大小写敏感
  • XML 必须正确地嵌套
  • XML 文档必须有根元素
  • XML 的属性值须加引号
  • 不能直接使用拥有特殊的意义的符号(保留字),而要“实体引用”(使用转义符号)。

下面是一些正确的xml代码片断和典型错误对照:


XML 树结构
XML 文档是一种树结构,它从“根部”开始,然后扩展到“枝叶”。XML 文档必须包含根元素。该元素是所有其他元素的父元素。
XML使用的是一种简单的可具有自我描述性的语法。
比如这是一个书籍信息结构图:


上图可用如下XML文档表示:

[NextPagexslt概述]
xslt概述
XSL 指扩展样式表语言(EXtensible Stylesheet Language)。XSLT 指 XSL 转换。万维网联盟开始发展 XSL 的起因是由于对基于 XML 的样式表语言的需求。以下将学习如何使用 XSLT 将 XML 文档转换为其他文档,比如 XHTML;如何在SF标签里使用xslt元素使模板按您需要的格式显示,或者在外部数据库读取你需要的数据。

xslt文档声明
根据 W3C 的 XSLT 标准,声明 XSL 样式表的正确方法是:

或者:

这两种方法是同义的,均可被使用。

如需访问 XSLT 的元素、属性以及特性,我们必须在文档顶端声明 XSLT 命名空间。
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 指向了官方的 W3C XSLT 命名空间。如果您使用此命名空间,就必须包含属性 version="1.0"。
[NextPageSiteFactory™标签制作常用xslt元素简介,<xsl:value-of>]

SiteFactory™标签制作常用xslt元素简介

<xsl:template> 元素
XSL 文档由一个或多套被称为模板(template)的规则组成。每个模板含有当某个指定的节点被匹配时所应用的规则。match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(比如,match="/" 定义整个文档)。<xsl:template> 元素内部的内容定义了写到输出结果的 HTML 代码。

<xsl:value-of> 元素
<xsl:value-of> 用于将选定节点的值作为文本插入
代码格式:

select为必选属性。用于指定数据的位置或者内容。
disable-output-escaping属性默认值为 "no"。如果值为 "yes",<xsl:value-of> 元素生成的文本节点在输出时将不进行任何转义。例如, 以下指令生成单个字符 "<":


以下 XSLT 文件从 <person> 元素以及 <given-name> 和 <family-name> 子元素中,创建 <p> 元素。<p> 元素将包含当前节点第一个 <given-name> 子元素的字符串值,后跟空格和当前节点第一个 <family-name> 子元素的字符串值 XML文件:

XSLT文件:

以下是处理结果:

[NextPagexslt元素简介-<xsl:for-each>]
<xsl:for-each> 元素
<xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素对其应用相同的模板
代码格式:


应用示例:输出包含 <BODY> 和 <TABLE> 元素的顶级 HTML 元素。该表包含每个用户的重复行。该 XSLT 文件还使用模板创建姓名、地址和电话源元素的 <TD> 元素。
XML文件:

XSLT文件:

输出结果:

[NextPagexslt元素简介-<xsl:if>]
<xsl:if> 元素
<xsl:if>显示符合一定条件的内容并对其应用模板 代码格式:


应用示例: XML 文件

XSLT 文件

处理结果

[NextPagexslt元素简介-<xsl:choose>]

<xsl:choose>, <xsl:when>, <xsl:otherwise> 元素
XSLT <xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试显示符合一定条件的内容并对其应用模板。将按照从上到下的顺序测试 <xsl:choose> 元素的 <xsl:when> 子级,直到其中一个元素上的 test 属性准确地说明源数据中的条件,或直到遇到 <xsl:otherwise> 元素。在选择了 <xsl:when> 或 <xsl:otherwise> 元素之后,将退出 <xsl:choose> 块。不需要明确的中断或退出语句。对于简单条件测试,请使用 <xsl:if> 元素。 代码格式:


XML 文件

XSLT 文件

处理结果

[NextPagexslt函数简介-format-number]
format-number 函数
将数字转换为字符串。转换的结果是格式化第一个参数 (number) 中指定的数字,使用第二个参数 (string) 中指定的格式,应用第三个可选参数 (string) 中命名的十进制格式中定义的规则。如果省略了第三个参数,即十进制格式名称,则使用默认的十进制格式。 代码格式:


第一个参数指定“输入值”。例如数字 5351
第二个参数指定“格式模式”。例如字符串“###.###,00”
第三个参数是可选的“十进制格式名称”。此参数允许在格式模式字符串中使用任意字符;字符分配给 <xsl:decimal-format> 元素中的某个角色。常用的十进制格式名称 european 用于颠倒逗号和句点的默认角色。
在格式模式中支持的字符如下:“.”、“,”、“#”、“%”、“0”和 Unicode 千分比字符 (#x2030)。“#”字符用于说明整数。“.”和“,”字符用于说明标点符号的位置和类型。“0”字符用于将 0 放在“.”字符的前面和后面,如果该位置将通过其他方式显示无数字,例如 00.3 或 3.00。在截断小数点右侧的位数时,数字将舍入。小数点左侧的位数从不会被截断。
输入值和格式模式字符串必须同时存在,否则将出现错误。如果输入值无法使用 number() 函数中的规则强迫为数字,format-number 函数将返回 NaN。如果格式模式字符串不是有效的模式字符串,函数将返回输入值,不作任何更改。

以下函数调用返回“5,351”:

以下函数调用返回“5351.00”:

以下函数调用返回“53.5100”:

以下函数调用返回“0053.5100”:

以下函数调用返回“0053.51”:

以下函数调用返回“53.6”:



后记:
网上的教程有的说 “XSLT 远比 CSS 更加完善”,“XSLT是XML的样式表”,小羊是不认同的。
XSLT更多地是在定义显示的结构,而不是CSS所能定义的样式(尺寸,颜色,边框,背景,距离等)。按照”样式和结构分离“的原则,在XSLT中内联大量的CSS定义,更不是一种明智之举。

本文参考:
http://msdn.microsoft.com/zh-cn/library/ms256058(VS.80).aspx

http://www.w3school.com.cn

查看与 SiteFactoryxslt标签xml元素相关的信息