【问题标题】:XSLT: Apply the same template to nodes with different namesXSLT:将相同的模板应用于具有不同名称的节点
【发布时间】:2016-12-12 15:38:32
【问题描述】:

我想将相同的 xsl:template 应用于 xml 树的不同节点,最好通过节点的属性进行选择。以下是 XML 树的示例:

<journal>
    <claimantmonth>
        <By format="lookup">Bank dr/cr</By>
        <Month format="inputRO">4</Month>
        <Year format="inputRO">2012</Year>
        <claimslist>
            <claim>
                <id format="hidden">867</id>
                <enteredDate format="dateRO">2012-06-11</enteredDate>
                <enteredBy format="lookup">chris</enteredBy>
                <expenseDate format="date">2012-04-02</expenseDate>
                <description format="text">Electric Co</description>
            </claim>
       </claimslist>
    </claimantmonth>
   </journal>

我想对enteredDate 和expenseDate 使用相同的模板,但对描述等使用不同的模板。

我对 XSLT 很陌生,但我一直在徒劳地寻找答案,所以我只需要一个指向哪里的指针。

我找到了很多关于如何将各种不同模板应用到 SAME 节点的示例。但这不是我的问题。

【问题讨论】:

  • 请添加您的 XSLT 的相关部分。顺便说一句,您的节点都没有任何属性(根据“属性”的通常定义)。这种节点的例子是什么?
  • 您可以使用&lt;xsl:template match="enteredDate | expenseDate"&gt;...&lt;/xsl:template&gt;。至于“通过节点的属性选择”,我在您的 XML sn-p 中根本看不到任何属性。
  • 糟糕,抱歉。我不小心复制了错误的版本。现在编辑以显示属性。至于 XSLT,我认为我没有什么要展示的,但在伪代码中它看起来像这样: inputRO: 我还在阅读,我想我需要更好地理解 XPATH。

标签: xml xslt


【解决方案1】:

你可以像这样匹配几个元素:

<xsl:template match="enteredDate|expenseDate">

你可以通过这样的属性值来匹配:

<xsl:template match="*[@class='sombre']">

我对 XSLT 很陌生,但我一直在寻找答案,但没有找到答案

我认为您提出这些问题意味着您的语言学习策略并不理想。我认为您正在尝试通过搜索示例来学习。这真的不好用——你会发现专家为专家编写的网站、傻瓜为傻瓜编写的网站,以及其他各种组合;您很少会遇到这样的网站,该网站以结构化、深思熟虑和同行评审的方式教您概念。在您了解这些概念之前,您不知道在搜索中使用哪些术语。你怎么知道你需要用谷歌搜索“联合模式”?不如给自己买一本好书。

【讨论】:

  • 这个 (
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多