0

0

如何用XSLT变量和参数 xsl:variable, xsl:param

煙雲

煙雲

发布时间:2026-02-18 08:39:09

|

740人浏览过

|

来源于php中文网

原创

xsl:variable用于定义不可变的局部值,作用域内只读;xsl:param用于定义可由调用方传入、带默认值的参数,支持模板复用与外部配置。

如何用xslt变量和参数 xsl:variable, xsl:param

在XSLT中,xsl:variablexsl:param 是定义可重用值的核心机制,区别在于:变量一旦赋值就不能更改,参数则可由调用方传入(支持默认值),常用于模板间通信或外部配置。

定义和使用 xsl:variable

变量用于存储计算结果、字符串、节点集等,作用域为其声明所在的元素范围内(如模板、for-each 内)。它不可重新赋值,但可引用其他变量或函数结果。

  • 基本语法:<variable name="count" select="count(//item)"></variable> —— 直接用 select 计算并赋值
  • 内容体方式:<variable name="greeting">Hello, <value-of select="$user"></value-of>!</variable> —— 支持混合文本与表达式
  • 变量名必须以字母或下划线开头,不能含空格或特殊符号;引用时用 $变量名
  • XSLT 1.0 中变量是“只读且不可覆盖”的,即使同名变量在嵌套作用域中声明,也仅遮蔽外层,不修改其值

定义和使用 xsl:param

参数类似变量,但支持外部传入值(如通过 Java、.NET 调用时设置,或被其他模板调用时传参),未传入时取默认值。常用于提高模板复用性和灵活性。

PHP与MySQL程序设计3
PHP与MySQL程序设计3

本书是全面讲述PHP与MySQL的经典之作,书中不但全面介绍了两种技术的核心特性,还讲解了如何高效地结合这两种技术构建健壮的数据驱动的应用程序。本书涵盖了两种技术新版本中出现的最新特性,书中大量实际的示例和深入的分析均来自于作者在这方面多年的专业经验,可用于解决开发者在实际中所面临的各种挑战。 本书内容全面深入,适合各层次PHP和MySQL开发人员阅读,既是优秀的学习教程,也可用作参考手册。

下载
  • 声明参数:<param name="limit" select="10"> —— 设定默认值为 10
  • 调用带参模板:<call-template name="format-list"><with-param name="limit" select="5"></with-param></call-template>
  • 在被调用模板内,$limit 将取传入的 5,而非默认的 10
  • 参数也可用内容体方式定义默认内容,适合复杂结构(如默认 XML 片段)

变量与参数的关键差异

理解两者的定位差异,能避免常见误用:

  • 可变性:变量赋值后不可变;参数值由调用上下文决定,运行时可能不同
  • 作用时机:变量在执行到其声明处时求值;参数在模板开始执行前完成绑定(含默认值计算)
  • 使用场景:局部中间结果(如计数、拼接字符串)用 xsl:variable;需要定制行为(如分页大小、语言标识、开关标志)用 xsl:param
  • 命名空间感知:两者都遵循 XSLT 的命名空间规则;若在带前缀的命名空间中声明,需注意前缀绑定一致性

实用技巧与注意事项

写得清晰、健壮的 XSLT 离不开对变量和参数的合理运用:

  • 优先用 select 属性而非内容体,性能更好(尤其处理大节点集时)
  • 避免在 for-each 外部定义依赖当前上下文的变量(如 select="text()"),否则可能取到意外节点
  • 参数值传入后即固化,不能在模板内再用 xsl:with-param 修改(那是传给子模板的)
  • XSLT 2.0+ 支持 as 属性声明类型(如 as="xs:integer"),有助于提前捕获类型错误

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

199

2023.11.20

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

865

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

449

2024.06.27

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1929

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2104

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1125

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

553

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

216

2023.09.04

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

462

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号