如何将一个 xhtml 文档中的 div 部分提取到另一个 xhtml 文档中

2024-03-09

我正在尝试使用 xslt 将一个 xhtml 文档中的 div 部分提取到另一个 xhtml 文档中。然而,我没有成功。相反,xslt 转换产生了有线输出。假设要转换以下xhtml文档:

<?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
   <title>title test</title>
</head>
<body>
   some blabla
   <div>
      <div id="testid" class="testclass">
         hello world!
      </div>
   </div>
   some other blabla <p/>
   test paragraph<p/>
</body>
</html>

xslt 应提取 ID 为“testid”的 div 部分并将其写入新的 xhtml 文档,该文档应如下所示:

<?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
   <title>title test</title>
</head>
<body>
   <div id="testid" class="testclass">
      hello world!
   </div>
</body>
</html>

我的 xslt 代码如下所示:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" version="1.0" indent="yes" omit-xml-declaration="yes"/>
  <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="de">
      <head>
      </head>
      <body>
        <xsl:apply-templates select="node()|text()"/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="*">
    <xsl:if test="div[@id='testid']">
      <xsl:copy-of select="*"/>
    </xsl:if>
    <xsl:apply-templates select="node()|@*" />
  </xsl:template>

</xsl:stylesheet>

实际上输出如下:

<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
  <head/>
  <body>de

    title test

    some blabla


    testidtestclass
    hello world!


    some other blabla
    test paragraph

  </body>
</html>

为了获得正确的结果,我需要在 xslt 中更改哪些内容?任何帮助表示赞赏。谢谢。


这个样式表(拉式):

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xhtml="http://www.w3.org/1999/xhtml"
 xmlns="http://www.w3.org/1999/xhtml"
 exclude-result-prefixes="xhtml">
    <xsl:template match="text()"/>
    <xsl:template match="xhtml:div[@id='testid']">
        <html lang="de">
            <head></head>
            <body>
                <xsl:call-template name="identity"/>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="node()|@*" mode="identity" name="identity">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*" mode="identity"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

通过此输入:

<?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
    <head>
        <title>title test</title>
    </head>
    <body>some blabla
        <div>
            <div id="testid" class="testclass">hello world!</div>
        </div>some other blabla 
        <p>test paragraph</p>
    </body>
</html>

Output:

<html lang="de" xmlns="http://www.w3.org/1999/xhtml">
    <head></head>
    <body>
        <div id="testid" class="testclass">hello world!</div>
    </body>
</html>

Note:从匹配节点调用身份规则。

这个样式表(推送样式):

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xhtml="http://www.w3.org/1999/xhtml"
 xmlns="http://www.w3.org/1999/xhtml"
 exclude-result-prefixes="xhtml">
    <xsl:template match="/">
        <html lang="de">
            <head></head>
            <body>
                <xsl:apply-templates select="//xhtml:div[@id='testid']"/>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

和“砖”模板:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xhtml="http://www.w3.org/1999/xhtml"
 xmlns="http://www.w3.org/1999/xhtml"
 exclude-result-prefixes="xhtml">
    <xsl:template match="/">
        <html lang="de">
            <head></head>
            <body>
                <xsl:copy-of select="//xhtml:div[@id='testid']"/>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将一个 xhtml 文档中的 div 部分提取到另一个 xhtml 文档中 的相关文章

  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • 防止用户在下拉菜单中选择默认值

    我试图阻止用户选择默认的下拉菜单选项 有没有办法在下拉菜单选项中添加文本而不是值 我的代码
  • 如何更改 Bootstrap 3 div 列顺序

    正在做我的第一个响应式设计 在 Bootstrap 3 中可能会出现类似的情况 在 lg 上更改此设置 a b c sm 上的这个 a c b 您可以使用两个 div 一个用于第一类型的布置 另一个用于第二类型的布置 第一个仅在 lg 中显
  • W3C 验证器:“握手警报:unrecognized_name”

    我正在尝试验证我的网站W3C Nu Html 检查器 https validator w3 org nu doc https 3A 2F 2Fwww healthdrop in 2F但我遇到了以下错误 不知道为什么 IO 错误 握手警报 u
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 如何使用 XSLT 排列节点层次结构?

    首先 我是一个完全的初学者XSLT 在一个项目中 我们正在以更抽象的方式综合树转换 为了概念证明 我试图将域扩展到简单的XSLT 但让我们看一个例子 我的 XML 文档中有几页 如下所示
  • 博客上的随机背景图片

    我正在尝试整理某种代码 以随机化我的博主博客上的背景图像 我的编程技能不足 但我愿意尝试建议 我记得在 WordPress 中实现了类似的功能 通过将 php 代码文件存储在图像文件夹中 然后从 CSS 中调用该 php 文件 就像它是图像
  • 无法更改 SVG 元素的类名

    我想通过单击按钮来更改应用于 SVG 的类 代码是here http jsfiddle net p19rnmev 我的 SVG 看起来像
  • UL 标签内的标签 H3 [重复]

    这个问题在这里已经有答案了 可能的重复 UL 中是否允许除 LI 之外的任何内容 https stackoverflow com questions 6056142 is anything except lis allowed in a u
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • html5 输入模式属性在表单之外不起作用?

    这把小提琴 http jsfiddle net 2gaw3 按预期工作 当用户输入无效的国家 地区代码时 它会显示警告 这另一个小提琴 http jsfiddle net y66vH 4 没有form元素 不起作用 看来输入的pattern
  • 如何改变HTML5视频的播放速度?

    如何更改 HTML5 中的视频播放速度 我查过视频标签的属性 https www w3schools com html html5 video asp在 w3school 但无法做到这一点 根据这个网站 http www chipwreck
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • css 计数器在 Internet Explorer 中无法工作以获取隐藏内容 - 如何修复?

    我们想要一些编号列表 并发现了这个很酷的计数器 您可以在 css 中使用它来让浏览器为您计算数字 ol instructions counter reset instructions section ol instructions gt l
  • 如何使 jQuery 向上动画

    我有一些 jquery 运行得相当好 但是当我将鼠标悬停在有问题的元素上时 底部向下扩展 这并不意外 但不是所需的效果 我希望元素的底部保持静止 而元素的顶部向上扩展 如果您想查看我目前拥有的内容 您可以导航至http demo ivann
  • Jquery,清除/清空 tbody 元素的所有内容?

    我认为这会相当简单 但似乎空方法无法清除我拥有的 tbody 如果有人知道执行此操作的正确方法 我将不胜感激 我只想删除 tbody 中包含的所有内容 到目前为止我正在尝试 tbodyid empty HTML table tbody tr
  • SimpleXML插入处理指令(样式表)

    我想集成一个XSL文件在一个XML给我的字符串php CURL命令 我试过这个 output XML gived me by curl option hotel simplexml load string output hotel gt a
  • 加载另一个 JS 脚本后加载

    这是我的代码 very big js file lots of html stuff 问题是 这些是异步加载的 有没有办法等待第二个脚本直到第一个脚本加载 如果您使用 jQuery 有一个非常简单的方法可以通过获取脚本 https api
  • gwt 中的垂直居中

    如何使用垂直面板在 gwt 中垂直居中 或者请告诉我有什么方法可以进行垂直居中 如果你想直接使用VerticalPanel从代码中 您需要使用setVerticalAlignment HasVerticalAlignment ALIGN M
  • span 和 iframe 正文中的宽度(以像素为单位)

    我需要知道 a 的宽度 nbsp 以像素为单位 以及是否取决于字体大小 另外 页面中不同元素的情况是否有所不同 还有 就是 nbsp 与常规不同 目的 nbsp 不间断空格 位于正常空格之上是为了防止单词之间出现换行 您可以使用多个 nbs

随机推荐

  • 如何在 try catch 语句中重新请求输入

    string l Console ReadLine try int Parse l catch FormatException Console WriteLine Invalid input Please enter 1 2 or 3 正如
  • 在python中将字典的字典写入csv

    我有一本字典 我想将其写入 csv 我的字典看起来像 dict object1 time1 value1 value2 time2 value3 value4 object2 time1 value5 value6 time2 value7
  • 使用 boost 序列化抽象类时出错

    我正在尝试序列化我的数据结构 以便将它们写入 TCP 套接字 到目前为止我发现我的问题是序列化 我什至尝试使用 BOOST SERIALIZATION ASSUME ABSTRACT T 但我找不到任何与我的程序类似的工作示例以及如何正确实
  • Numba 和 numpy 数组分配:为什么这么慢?

    我最近使用 Cython 和 Numba 来加速进行数值模拟的 python 的小片段 起初 使用 numba 进行开发似乎更容易 然而 我发现很难理解 numba 何时会提供更好的性能 何时不会 意外性能下降的一个例子是当我使用该函数时n
  • @Entity 和 @Table 中的名称属性

    我有疑问 因为 Entity 和 Table 中都有 name 属性 例如 我允许 name 属性具有相同的值 Entity name someThing Table name someThing 我也可以为同一个班级使用不同的名字 Ent
  • 如何使用java从cucumber中的场景大纲中获取场景名称

    假设我有一个测试用例 例如 Scenario Facebook login test GIVEN I am a Facebook user WHEN I enter my user name password THEN login shou
  • 从完整 URL 获取域名

    假设有人输入这样的 URL http i imgur com a b c query value query2 value 我想返回 imgur com not i imgur com 这是我现在拥有的代码 sourceUrl parse
  • PHP 中的 AES/CBC/PKCS#5 加密算法

    我正在尝试使用 表单集成 方法将 SagePay 支付网关集成到网站中 基本上 表单集成方法的工作原理是在网页中插入表单 并在选择表单的 提交 按钮时将信息发布到 SagePay 的服务器 在将信息发送到 SagePay 的服务器之前 必须
  • 如何在xcode中链接glew

    我无法将 glew 与 xcode 链接 我有 glew 库位于 usr local lib libGLEW dylib 当我在命令行中编译文件时 g usr local lib libGLEW dylib framework OpenGL
  • 通过同一程序集的反射生成代码

    我已经开始涉足 T4 一开始相处得很好 但后来遇到了一个实际上非常明显并且可能无法解决的问题 但也许有一种方法我只是缺乏知道或看到的经验 给定以下课程 public class T4Test CodeActivity protected o
  • 无法连接,因为目标机器主动拒绝 127.0.0.1:2382

    我正在尝试连接 SSAS 引擎 SQL Server Denali 但失败并出现以下错误 无法建立连接 因为目标计算机主动拒绝它 127 0 0 1 2382 SSAS 服务在网络服务帐户下运行 SQL 浏览器服务在本地系统帐户上运行 你运
  • 仅使用 Yocto/bitbake 快速重建设备树?

    因此 每次修改设备树时 我通常会更改自定义配方中的 dts 并重建映像 重建需要很长时间 因为它会重建整个内核 然后需要构建镜像 最后部署到目标设备 我是否缺少任何仅重建设备树的技巧 UPDATE 我已将 g0hl1n 的答案标记为正确答案
  • 面板数据中汇总回归模型的模型预测

    我正在尝试生成一个预测模型 在该模型中 我每年都会进行多次汇总回归 基于前几年 从而允许系数随时间变化 这在提供的示例数据中可能没有意义 但在我的示例中实际上是这样做的 这是我到目前为止的想法 我将代码调整为 plm 包中的可重现示例 数据
  • 不同文化信息之间的日期时间转换

    我想在国家 地区之间创建不同的转换 并且我正在使用 C 我正在尝试将日期时间转换为另一个日期时间 格式为 dd mmm yyyy CultureInfo ci CultureInfo CreateSpecificCulture langua
  • seq2seq 中的 TimeDistributed(Dense) 与 Dense

    鉴于下面的代码 encoder inputs Input shape 16 70 encoder LSTM latent dim return state True encoder outputs state h state c encod
  • 在 Maven 中设置注释处理器生成的源目录

    我正在尝试将使用注释处理器生成源的构建移动到 Maven 我尝试按如下方式配置 maven compiler plugin
  • Angular6 - 读取文本/纯文本的响应正文

    我正在执行注册操作 当用户成功注册时 我会在后端返回他的 ID 例如 105 当注册失败 用户已存在 时 我返回 USER EXISTS 我已经在 Postman 上检查了请求 响应正文是正确的 在这两种情况下 我都会返回 纯文本 文本 但
  • Django 双向ManyToMany - 如何防止在第二个模型上创建表?

    我有两个模型 每个模型都有一个共享的 ManyToMany 使用 db table 字段 但是如何防止syncdb 尝试为第二个模型创建共享表呢 class Model1 models Model othermodels ManyToMan
  • 您可以使用 Spark SQL/Hive/Presto 直接从 Parquet/S3 复制到 Redshift 吗?

    我们有大量的服务器数据存储在S3 很快将在Parquet格式 数据需要进行一些转换 因此它不能直接从 S3 复制 我将使用Spark访问数据 但我想知道是否可以跳过一个步骤并运行查询来提取 转换数据 然后复制它 而不是使用 Spark 操作
  • 如何将一个 xhtml 文档中的 div 部分提取到另一个 xhtml 文档中

    我正在尝试使用 xslt 将一个 xhtml 文档中的 div 部分提取到另一个 xhtml 文档中 然而 我没有成功 相反 xslt 转换产生了有线输出 假设要转换以下xhtml文档 some blabla div div class t