jjzjj

html - 标签位置正确的节点的 XSLT 输出 text()

coder 2024-07-01 原文

所以我有以下 XML 片段...

我需要将其放入 HTML 中。我想说的是,对于每个(部分),打印出该部分的文本,如果您看到 (b) 标签,则在单词周围输出该标签。但是我不确定该怎么做,因为我似乎只能输出 section 的 text()。

但我需要输出节点的 text() 以及操作该 text() 中的标签。

这是示例 XML:

<body>
<section>
<title>Response</title>
<p> Some info here <b> with some other tags</b> or lists like <ol> <li>something</li>     </ol></p>
</section>
<section>Another section same format, sections are outputted as divs </section>
</body>

这是我目前所拥有的:

<div class="body">

<xsl:for-each select='topic/body/section'>

<div class="section">
<xsl:choose>
<xsl:when test="title">
    <h2 class="title sectiontitle"><xsl:value-of select="title"/></h2>
</xsl:when>
<xsl:when test="p">
    [I dont know what to put here? I need to output both the text of the paragraph tag but also the html tags inside of it..]
</xsl:when>
</xsl:choose>


</div>
</xsl:for-each>
</div>

所需的输出 - xml 中每个部分的此 html 代码块。

<div class="section">
<h2 class="title">Whatever my title is from the xml tag</h2>
<p> The text in the paragraph with the proper html tags like <b> and <u> </p>
</div>

最佳答案

这很简单。为每个要转换为 HTML 的元素编写一个模板。

您没有为其编写模板的所有节点都由身份模板处理,该模板将它们原封不动地复制到输出:

<!-- identity template -->
<xsl:template match="node() | @*">
  <xsl:copy>
     <xsl:apply-templates select="node() | @*" />
  </xsl:copy>
</xsl:template>

<!-- <title> becomes <h2> -->
<xsl:template match="title"> 
  <h2 class="title">
    <xsl:apply-templates select="node() | @*" />
  </h2>
</xsl:template>

<!-- <section> becomes <div> -->
<xsl:template match="section">
  <div class="section">
    <xsl:apply-templates select="node() | @*" />
  </div>
</xsl:template>

<!-- <b> becomes <strong> -->
<xsl:template match="b">
  <strong>
    <xsl:apply-templates select="node() | @*" />
  </strong>
</xsl:template>

XSLT 处理器为您处理所有递归(具体来说,<xsl:apply-templates> 会这样做),因此您的输入

<section>
  <title> some text </title>
  Some stuff there will have other tags like <b> this </b>
</section>

会变成

<div class="section">
  <h2 class="title"> some text </h2>
  Some stuff there will have other tags like <strong> this </strong>
</div>

由于身份模板复制节点未更改,因此您无需编写“将 <ul> 转换为 <ul>”的模板。这会自行发生。只有不是 HTML 的元素才需要它们自己的模板。

如果您想阻止某些内容出现在 HTML 中,请为它们编写一个空模板:

<xsl:template match="some/unwanted/element" />

关于html - 标签位置正确的节点的 XSLT 输出 text(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9160881/

有关html - 标签位置正确的节点的 XSLT 输出 text()的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  3. ruby - 在院子里用@param 标签警告 - 2

    我试图使用yard记录一些Ruby代码,尽管我所做的正是所描述的here或here#@param[Integer]thenumberoftrials(>=0)#@param[Float]successprobabilityineachtrialdefinitialize(n,p)#initialize...end虽然我仍然得到这个奇怪的错误@paramtaghasunknownparametername:the@paramtaghasunknownparametername:success然后生成的html看起来很奇怪。我称yard为:$yarddoc-mmarkdown我做错了什么?

  4. ruby - 通过 erb 模板输出 ruby​​ 数组 - 2

    我正在使用puppet为ruby​​程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby​​不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这

  5. ruby-on-rails - 如何使用 instance_variable_set 正确设置实例变量? - 2

    我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击

  6. ruby-on-rails - Rails HTML 请求渲染 JSON - 2

    在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这

  7. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  8. ruby - 如何进行排列以有效地定制输出 - 2

    这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][

  9. ruby-on-rails - 正确的 Rails 2.1 做事方式 - 2

    question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参

  10. ruby-on-rails - Ruby url 到 html 链接转换 - 2

    我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.

随机推荐