XSLT怎么生成处理指令 xsl:processing-instruction

幻夢星雲
发布: 2025-12-12 23:11:18
原创
672人浏览过
XSLT中用生成处理指令,而非创建该标签本身;支持静态name属性、动态表达式及隐式target,输出位置受限且target不可为xml。

xslt怎么生成处理指令 xsl:processing-instruction

在XSLT中生成处理指令(Processing Instruction,简称PI),不能直接用 <processing-instruction></processing-instruction> 标签来“创建”一个名为 xsl:processing-instruction 的元素——因为 xsl:processing-instruction 本身是XSLT的一个**指令元素**,用于在输出中插入任意处理指令(比如 <?xml-stylesheet ... ?>),而不是生成它自己。

正确用法:用 <processing-instruction></processing-instruction> 输出处理指令

<processing-instruction></processing-instruction> 是XSLT内置的指令,作用是在结果文档中生成一条处理指令(PI),例如 XML 声明之后的样式表关联、自定义 PI 等。它的名字(即 PI 的 target)通过属性或内容指定,内容作为 PI 的 data 部分。

常见写法:

GemDesign
GemDesign

AI高保真原型设计工具

GemDesign 652
查看详情 GemDesign
  • 静态写法(固定 target 和 data):
    type="text/xsl" href="style.xsl"
    → 输出:<?xml-stylesheet type="text/xsl" href="style.xsl"?>
  • 动态 target(用 name 属性 + 表达式):
    {@pi-data}
    前提是源XML中有 pi-targetpi-data 属性,例如 <elem pi-target="myapp" pi-data="version=2.0"></elem>
  • 不带 name 属性时,用第一个子文本节点作 target:
    php echo "hello";
    → 输出:<?php echo "hello";?>(注意:target 是 php,data 是后面部分)

不能生成 <processing-instruction></processing-instruction> 这个标签本身

<processing-instruction></processing-instruction> 是 XSLT 指令,只在样式表中使用,不会出现在输出结果里。如果你想在输出中“显示”或“输出”这段文字(比如用于文档示例),必须把它当作普通文本转义输出:

  • <text></text> + 手动转义:
    <xsl:processing-instruction name="foo">bar</xsl:processing-instruction>
  • 或借助 <copy-of></copy-of> 复制预定义的文本节点(更安全)

注意事项

  • 处理指令只能出现在 XML 文档的根节点下(即 document node 后、根元素前),或元素内容中(但不能在属性值或注释里);XSLT 引擎通常会自动校验位置,错误位置可能被忽略或报错
  • target 名不能是 xml(大小写敏感),这是 XML 规范保留的(如 <?xml ...?> 是声明,不是 PI)
  • 如果 data 中含 ?> ,需确保不提前结束 PI;XSLT 处理器一般会自动转义,但手写字符串时要留意

基本上就这些。核心记清楚:<processing-instruction></processing-instruction> 是“生成 PI 的工具”,不是“被生成的对象”。

以上就是XSLT怎么生成处理指令 xsl:processing-instruction的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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