我可以将 xslt 模板的结果作为参数传递给另一个模板吗?

2024-01-16

我正在尝试使用 XSLT 模板基本上重新创建 ASP.NET 母版页的功能。

我有一个“母版页”模板,其中包含存储在 .xslt 文件中的大部分页面 html。我有另一个特定于单个页面的 .xslt 文件,它采用表示页面数据的 xml。我想从我的新模板调用母版页模板,并且仍然能够插入我自己的将要应用的 xml。如果我可以传递一个参数,该参数允许我使用该参数作为名称调用模板,那就可以解决问题,但这似乎是不允许的。

基本上我有这个:

<xsl:template name="MainMasterPage">
  <xsl:with-param name="Content1"/>
  <html>
    <!-- bunch of stuff here -->
    <xsl:value-of select="$Content1"/>
  </html>
</xsl:template>

和这个:

<xsl:template match="/">
  <xsl:call-template name="MainMasterPage">
    <xsl:with-param name="Content1">
      <h1>Title</h1>
      <p>More Content</p>
      <xsl:call-template name="SomeOtherTemplate"/>
     </xsl:with-param>
   </xsl-call-template>
</xsl:template>

发生的情况是,嵌套的 xml 基本上被剥离,插入的只是“TitleMore Content”


所提供的代码的问题在这里:

<xsl:value-of select="$Content1"/>

这将输出顶部节点的所有文本节点后代的串联$Content1(如果它包含文档)或其第一个元素或文本子元素的字符串值(如果它是 XML 片段)。

你需要使用

<xsl:copy-of select='$pContent1'>

代替

<xsl:value-of select='$pContent1'>.

这正确复制了的所有子节点$pContent1

下面是修正后的变换:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <xsl:call-template name="MainMasterPage">
    <xsl:with-param name="pContent1">
      <h1>Title</h1>
      <p>More Content</p>
      <xsl:call-template name="SomeOtherTemplate"/>
     </xsl:with-param>
   </xsl:call-template>
</xsl:template>

<xsl:template name="MainMasterPage">
  <xsl:param name="pContent1"/>
  <html>
    <!-- bunch of stuff here -->
    <xsl:copy-of select="$pContent1"/>
  </html>
</xsl:template>

 <xsl:template name="SomeOtherTemplate">
   <h2>Hello, World!</h2>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于任何 XML 文档(未使用)时,就会生成所需的正确结果:

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

我可以将 xslt 模板的结果作为参数传递给另一个模板吗? 的相关文章

随机推荐

  • 线程“main”中的异常 java.lang.NoClassDefFoundError:Hello

    这是我第一个使用 Java 的项目 我正在使用Ubuntu 我在文件夹里 home anis jtest myProject我运行 Hello java 文件 javac src org example Hello java 似乎有效 我没
  • 在 C# 中使用 LINQ 求数字数组的累积和

    我有一个包含双精度数的 csv 字符串 例如 0 3 0 4 0 3 并且我希望能够输出包含这些数字的累积和的双精度数组 例如 0 3 0 7 1 0 到目前为止 我已经 double probabilities textBox f Tex
  • 需要有关具有多种交互的闪亮动态 UI 算法的帮助

    我的闪亮算法 app R 代码在底部 要求用户上传文件 提供带有选项 无 国家 州 城市 的下拉字段 选择 无 时 仅应出现文本输出 选择 国家 地区 时 仅应显示国家 地区过滤器 选择 州 时 应同时显示国家 地区和州过滤器 选择 城市
  • 如何从实时照片中提取图像?

    我知道如何从实时照片中提取视频 解释here https stackoverflow com questions 32959973 extract video portion from live photo Use the PHAssetR
  • 挂钩从 Typescript 引导 4 模态显示/隐藏事件

    有一个带有 id 的模态myModal我试图在它显示和关闭时连接到事件 按照文档https v4 alpha getbootstrap com components modal events https v4 alpha getbootst
  • Google 图表无法与 Wkhtmltopdf 配合使用

    我正在尝试使用 Google Charts 在 PDF 中生成多个图表 对于 PDF 我使用 CakePDF 和 Wkhtmltopdf 引擎 不过 我似乎在将 Google Chart 代码实际加载到 PDF 中时遇到问题 这是我当前的
  • PHP 中的死代码检测 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Cloudera 5.6:Parquet 不支持日期。参见 HIVE-6384

    我目前正在使用 Cloudera 5 6 尝试根据另一个表在 hive 表中创建镶木地板格式表 但遇到错误 create table sfdc opportunities sandbox parquet like sfdc opportun
  • jqgrid 删除网格内的所有行

    有没有一种方法可以在一个函数调用中删除所有行 而不是通过循环遍历所有行并逐行删除 提前致谢 如果您的意思是从网格中删除所有行 您可以这样做 grid1 jqGrid clearGridData
  • Javascript/Angular:清晰的图像选择表单输入

    所有这一切都是有角度的 没有太多无聊的细节 我有一个图像上传按钮 但实际上并不上传图像 相反 虚拟 表单元素只是将信息传递到另一个数组 该数组显示图像的小预览缩略图 并为用户提供删除任何他们不想上传的选项 除了一个令人恼火的细节之外 所有这
  • MVC控制器中如何将数据持久保存在内存中?

    请看下面的动作 当用户第一次导航时 创建一个对象 然后当他在页面中导航时 再次访问操作 但通过 Ajax 请求 并且数据消失 工作表 null private static List
  • C/C++:按 ENTER 后可以将光标保留在当前行吗?

    我想问一下有没有办法让按ENTER键后光标保持在当前行 例如 include
  • 在终端中测试时如何更改默认的 Xcode iphone 模拟器?

    我知道这里有一个类似的问题 测试时如何更改默认的Xcode iphone模拟器 https stackoverflow com questions 3643298 how to change the default xcode iphone
  • Spring RestTemplate 与 body jdk 1.8 交换 DELETE

    我正在尝试通过交换方法使用 Spring RestTemplate 对正文执行 HTTP DELETE 请求 但我总是收到 400 Bad Request 例如这个问题 https stackoverflow com questions 3
  • 按长度排序单词,然后按字母顺序排序

    下面你可以看到我的代码 它从字典中读取单词并将与特定模式匹配的单词复制到 test txt 我的问题是如何首先按长度对 test txt 中的单词进行排序 然后按长度排序 然后按字母顺序排序 例如 I have car mouse numb
  • 在 yii2 Gridview 小部件中渲染 html

    这就是我在网格视图上渲染值的方式 但我可以看到文本值 而不是链接 我怎样才能让它渲染 html 而不是文本 在链接列配置中添加 format gt html 或者如果你想要一些额外的标记 format gt raw 的情况下raw请记住对来
  • ConcatRelated() 函数的字符限制

    我一直在用艾伦 布朗的ConcatRelated 函数 但我意识到对于较大的数据集 数据是不完整的 此函数是否有字符限制 如果有 是否有不同的函数 UDF 可以实现相同的结果 这是功能 并链接回原始线程http allenbrowne co
  • C++ 相当于 Java static Final String

    我经常需要定义与类关联的字符串常量 例如 XML 属性 默认文件名等等 在Java中我会简单地定义类似的东西 public static final String KEY attribute 在类或接口内部 在 C 中 以下内容将无法编译
  • 如何让 vim 在一行内按字母顺序对 CSS 规则进行排序?

    Source foo line height 150px font size 24px clear both vim 魔法在这里 可能是基于视觉选择的东西 Result foo clear both font size 24px line
  • 我可以将 xslt 模板的结果作为参数传递给另一个模板吗?

    我正在尝试使用 XSLT 模板基本上重新创建 ASP NET 母版页的功能 我有一个 母版页 模板 其中包含存储在 xslt 文件中的大部分页面 html 我有另一个特定于单个页面的 xslt 文件 它采用表示页面数据的 xml 我想从我的