使用 XSL 和 Php 将 XML 数据转换为 HTML:仅打印 xml 标签,不带任何格式

2023-11-29

我必须将 xml 输出转换为 html。我正在关注以下教程链接文本我的代码在一行中输出 xml 标签,没有任何文本值格式。我希望输出为 HTML 无序列表,遵循 xml 文件输出中父子级的层次结构。

这是页面输出:

message msg 1message msg 1-1message msg 1-2message msg 1-2-1message msg 1-2-2message 
msg 1-2-2-1message msg 1-2-2-1-1message msg 1-2-2-1-2 

& 这是页面源:

<html:ul xmlns:html="http://www.w3.org/1999/xhtml"><html:li>message msg 1</html:li>
<html:ul><html:li>message msg 1-1</html:li><html:li>message msg 1-2</html:li><html:ul>
<html:li>message msg 1-2-1</html:li><html:li>message msg 1-2-2</html:li><html:ul>
<html:li>message msg 1-2-2-1</html:li><html:ul><html:li>message msg 1-2-2-1-1</html:li>
<html:li>message msg 1-2-2-1-2</html:li></html:ul></html:ul></html:ul></html:ul></html:ul>

这是我的代码

php file:

<?php
# LOAD XML FILE
$XML = new DOMDocument();
$XML->load('messages.xml');

# START XSLT
$xslt = new XSLTProcessor();
$XSL = new DOMDocument();
$XSL->load('msg.xsl');
$xslt->importStylesheet( $XSL );
print $xslt->transformToXML( $XML );
?>

msg.xsl:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:html="http://www.w3.org/1999/xhtml">
  <xsl:output omit-xml-declaration="yes" />

  <xsl:template match="messages">
    <html:ul>
      <xsl:apply-templates select="message" />
    </html:ul>
  </xsl:template>

  <xsl:template match="message[message]">
    <html:li>message <xsl:value-of select="@msg_id" /></html:li>
    <html:ul>
      <xsl:apply-templates select="message" />
    </html:ul>
  </xsl:template>

  <xsl:template match="message">
    <html:li>message <xsl:value-of select="@msg_id" /></html:li>
    <xsl:apply-templates select="message" />
  </xsl:template>
</xsl:stylesheet>

消息.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="msg.xsl"?><messages>
    <message msg_id="1" emp_msg="msg 1" parent_msg_id="" parent_msg="" depth="0">
        <message msg_id="2" emp_msg="msg 1-1" parent_msg_id="1" parent_msg="msg 1" depth="1"/>
        <message msg_id="3" emp_msg="msg 1-2" parent_msg_id="1" parent_msg="msg 1" depth="1">
            <message msg_id="4" emp_msg="msg 1-2-1" parent_msg_id="3" parent_msg="msg 1-2" depth="2"/>
            <message msg_id="5" emp_msg="msg 1-2-2" parent_msg_id="3" parent_msg="msg 1-2" depth="2">
                <message msg_id="6" emp_msg="msg 1-2-2-1" parent_msg_id="5" parent_msg="msg 1-2-2" depth="3">
                    <message msg_id="7" emp_msg="msg 1-2-2-1-1" parent_msg_id="6" parent_msg="msg 1-2-2-1" depth="4"/>
                    <message msg_id="8" emp_msg="msg 1-2-2-1-2" parent_msg_id="6" parent_msg="msg 1-2-2-1" depth="4"/>
                </message>
            </message>
        </message>
    </message>
</messages>

您的样式表不输出 HTML,而是输出 XHTML 片段,并且您需要以某种方式(使用限定名称)将其作为 application/xml 提供给浏览器(例如 Mozilla、Opera、Safari、IE 9,但不是 IE 6) -8) 理解该内容类型。

所以请确保你做了类似的事情

  header('Content-Type: application/xml');

在将内容发送到浏览器之前。或者从结果元素中删除任何 XHTML 命名空间和任何前缀,然后 XSLT 样式表输出一个 HTML 片段,更多浏览器可以解析和理解为 text/html 并根据需要呈现它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XSL 和 Php 将 XML 数据转换为 HTML:仅打印 xml 标签,不带任何格式 的相关文章

  • 编辑 HTACCESS 文件以防止直接访问特定文件夹中的特定文件

    我试图阻止直接访问子文件夹中的特定文件 我意识到这个论坛上有很多描述类似问题的主题 但是 我的似乎有点尴尬 由于我已经存在 HTACCESS 文件 这是文件的文件路径 www example com PRINCIPAL PROJECTS m
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • 来自 JSON 的 Angular 8 动态表单

    我正在尝试从 JSON 模式递归生成动态表单 但我正在努力解决找不到表单控件的问题 这是代码示例 我收到这个错误 错误错误 找不到名称为 createdAt 的控件 我尝试了不同的方法 但仍然存在问题 我知道我错过了一些东西 所以请帮忙 任
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • 在网页上的文本框中键入内容时删除所有空格

    我如何在用户打字时即时删除输入到文本框中的空格 function var txt myTextbox var func function txt val txt val replace s g txt keyup func blur fun
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • Mysqli 更新抛出 Call to a member function bind_param() 错误[重复]

    这个问题在这里已经有答案了 我有一个 70 80 字段表单 需要插入到表中 因此我首先根据表单中的输入名称在数据库中创建了一个表 而不是手动创建一个巨大的插入语句 这是我使用的代码创建 更改表 function createTable ar
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • iOS7 中“-webkit-overflow-scrolling: touch” 最初的屏幕外元素被破坏

    既然转基因种子已经发布了 我们现在可以谈谈了 看起来 iOS7 中的 webkit overflow scrolling touch 已损坏 最初不在屏幕上的元素的触摸事件不会触发 或者在某些情况下只是不可靠 这是一个例子
  • 如何将 Smarty 3 包含到 Laravel 4 中?

    我是 Laravel 的新手 所以仍在习惯这些概念 但是我有大约 10 年的使用 Smarty 的经验 所以我希望利用这一点 除了事实上 Blade 似乎缺乏太多我发现有用且在 Smarty 中开箱即用的功能 但无论如何除了这个问题的要点之
  • 从所有会话中注销

    我有一个注销选项 这是我的代码 session start session destroy setcookie key time 60 60 24 setcookie username time 60 60 24 我想添加另一个选项来注销所
  • 我可以停止 :hover 应用于元素吗?

    假设我有一些 CSS button hover font weight bold 我怎样才能防止 hover随意应用样式 我的目标用例是当元素被禁用时 例如 使用这个 HTML
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • 为什么“tbody”不设置表格的背景颜色?

    我在用 tbody 作为 CSS 选择器来设置background color在一个表中 我这样做是因为我有多个 tbody 表内的部分 它们具有不同的背景颜色 我的问题是 当使用border radius在细胞上 细胞不尊重backgro
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • HTML 默认图像大小

    我在我的代码上显示 3 张图片 图片具有不同的尺寸 宽度和高度 div class row div class col lg 12 h2 class page header Gallery h2 div div class col md 4

随机推荐

  • SQL Server 中的转义字符

    我想使用带有转义字符的引号 当有特殊字符时 如何避免出现以下错误 字符串后面未闭合的引号 您可以像这样转义引用 select it s escaped 结果将是 it s escaped
  • 将矩阵转换为一维数组

    我有一个矩阵 32X48 如何将矩阵转换为一维数组 要么用 scan 读取它 要么只在矩阵上执行 as vector 如果您想要按行或按列转置矩阵 您可能需要先转置矩阵 gt m matrix 1 12 3 4 gt m 1 2 3 4 1
  • Android 中的内存分析工具?

    我只是想知道如何在 android 中使用内存分析器工具 请告诉我如何执行此操作以了解特定项目的内存泄漏 有人可以给我一步一步的程序吗 在 Eclipse 中打开 DDMS 透视图 Select Devices tab 选择您想要转储的进程
  • 为什么 hadoop 无法识别我的 Map 类?

    我试图在 hadoop 2 2 0 上运行我的 PDF 字数统计 mapreduce 程序 但出现此错误 13 12 25 23 37 26 INFO mapreduce Job Task Id attempt 1388041362368
  • Excel VBA:后期绑定参考

    我正在尝试为 Excel 中的加载项编写一些代码 该加载项从 SQL Server 获取一些数据 代码本身运行完美 但不知何故有些东西被损坏了 看起来代码可以正常工作几次 然后突然触发 Excel 崩溃 经过很长一段时间 我确定它与引用有关
  • 导入服务时,我应该将它们导入到 NgModule 中的“imports”数组还是“providers”数组中?

    来自 Angular Doc def 关于imports in NgModule is 指定模块列表 其导出的指令 管道应可供该模块中的模板使用 And providers 定义此模块的注入器中可用的可注入对象集 所以这是问题 当我想使用第
  • SwiftUI:如何使 TextField 适合多行内容?

    在附加的代码示例中 我的文本字段中有很多额外的顶部间距 如果我将内容更改为只有一行 例如 内容 那么它就很合适 如何为多行文本获得与单行相同的紧密配合行为 预览和代码是使用 Xcode 11 1 Swift 5 1 制作的 import S
  • 文件夹 getParents 无法在 Google 脚本中获取团队云端硬盘名称

    我正在尝试使用脚本在团队驱动器中构建文档的完整路径 代码如下所示 var path var folder id getParents while folder folder hasNext var f folder next path un
  • Discord.net 无法使用 NAudio 传输音频

    我想在语音频道中播放 mp3 文件 BOT成功可以连接 但不播放任何内容 并抛出异常 Code public async Task SendAudioAsync IGuild guild IMessageChannel channel st
  • 设置 pandas 数据框中的列顺序

    有没有一种方法可以根据我的个人喜好对 pandas 数据框中的列重新排序 即不是按字母或数字排序 而是更像遵循某些约定 简单的例子 frame pd DataFrame one thing 1 2 3 4 second thing 0 1
  • 是否可以在同一台电脑上安装 python 3 和 2.6?

    我该怎么做 原因是我想尝试一些 pygame 但我目前安装了 python 3 并且一直在学习它 我也有兴趣尝试 wxpython 或类似的东西 但我还没有查看它们的兼容性 编辑 我在 Windows Vista 64 位上 如果您使用的是
  • MPI、C、派生类型、向量结构?

    我需要创建一个 MPI 派生类型来表示程序中的类 该类相当简单 但很大 大约 75 个数据成员 所有数据成员都是单值 一维数组或二维数组 这是一个例子 class RestartData int dsr double firea2sorgn
  • 通过 pandas 绘图界面绘制带有第二个 y 轴的 pandas 数据框时设置图例位置 [重复]

    这个问题在这里已经有答案了 我正在通过 pandas 绘图界面绘制带有第二个 y 轴的 pandas 数据框 如中所述文档像这样 df pd DataFrame np random randn 24 3 3 index pd date ra
  • 如何使用 plsql-parser (ANTLR)

    我想在自动化测试中检查 PL SQL 查询语法 它看起来像https github com porcelli plsql parser可能对此有用 不过 我不容易找到如何安装和使用它 请注意 这是针对 Ruby 项目的 但我在 Java 方
  • Java 中的 FileNotFound 异常

    我是Java新手 我想将一些类字段值存储在HashMap中 然后将其写入文件 路径作为参数传递 然后恢复HashMap并获取所需的信息 在我的名为 Carte 的构造函数中 我收到一个异常 即找不到文件 无论如何它位于正确的位置并且保存的数
  • 从 div 标签而不是文本区域标签进行实时 HTML/CSS 预览

    我想要创建实时 HTML CSS 预览在一页上 但是使用textareas不会给出代码 该代码将固定在页面中 div 我希望用户能够更改代码这将反映在实时预览框中 我创建了一个页面 您可以在其中更改部分脚本文本 对于业余爱好者 您可以在这里
  • 将焦点设置在 WPF 中的文本框上

    如何将焦点设置在TextBoxWPF 中的元素 我有这个代码 txtCompanyID Focusable true txtCompanyID Focus 但它不起作用 任何想法 In XAML
  • 通过 API 创建 Shopify Webhook 时出错

    我正在尝试通过 API 创建 Webhook 当客户安装应用程序 控制器 时 def init webhooks topics products create products update products delete topics e
  • 检索Leaflet当前的比例值

    是否可以获取Leaflet组件当前的scale值 上图显示了我想通过某种方法检索的 300 公里 或 100 英里 现有文档仅显示如何使用特定选项添加比例控件 http leafletjs com reference html contro
  • 使用 XSL 和 Php 将 XML 数据转换为 HTML:仅打印 xml 标签,不带任何格式

    我必须将 xml 输出转换为 html 我正在关注以下教程链接文本我的代码在一行中输出 xml 标签 没有任何文本值格式 我希望输出为 HTML 无序列表 遵循 xml 文件输出中父子级的层次结构 这是页面输出 message msg 1m