当前位置: 首页 > 知识库问答 >
问题:

使用translate函数删除XSLT中的单词“and”

应翰飞
2023-03-14

例如:

 <xsl:variable name="nme" select="translate(./Name/text(), ',:, '')" />

除了“,:”之外,我还想去掉“and”这个词。请建议。

共有1个答案

督翰学
2023-03-14

translate函数不能做到这一点,它只能删除或替换单个字符,而不能删除或替换多个字符串。像XSLT1.0中的许多东西一样,逃生路线是一个递归模板,最简单的版本是:

<xsl:template name="removeWord">
  <xsl:param name="word" />
  <xsl:param name="text" />

  <xsl:choose>
    <xsl:when test="contains($text, $word)">
      <xsl:value-of select="substring-before($text, $word)" />
      <xsl:call-template name="removeWord">
        <xsl:with-param name="word" select="$word" />
        <xsl:with-param name="text" select="substring-after($text, $word)" />
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$text" />
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

然后在定义NME变量时调用此模板。

<xsl:variable name="nme">
  <xsl:call-template name="removeWord">
    <xsl:with-param name="word" select="'and'" /><!-- note quotes-in-quotes -->
    <xsl:with-param name="text" select="translate(Name, ',:', '')" />
  </xsl:call-template>
</xsl:variable>

这里我使用translate删除单个字符,然后将结果传递给模板以删除“and”。

<xsl:variable name="noEdition">
  <xsl:call-template name="removeWord">
    <xsl:with-param name="word" select="'Edition'" />
    <xsl:with-param name="text" select="translate(Name, ',:', '')" />
  </xsl:call-template>
</xsl:variable>

<xsl:variable name="nme">
  <xsl:call-template name="removeWord">
    <xsl:with-param name="word" select="' and'" />
    <xsl:with-param name="text" select="$noEdition" />
  </xsl:call-template>
</xsl:variable>
 类似资料:
  • 我有一个有数千行的pd数据帧。每一行都包含一列标记为text\u processed的包含文本的列。这些文本可能很长,每行/文本数百个单词。现在我想消除95%行中出现的单词。我所做的是将所有文本连接到一个大字符串中,并标记该字符串。我现在有了所有课文中所有单词的词汇表。现在我想得到每个单词所在的行数。一种简单(且缓慢)的方法是循环每个单词,比较该单词是否存在于列中,并对结果求和以获得该单词所在的行

  • 我正在使用XSLT1.0和XML。我对这些主题是新手,但我一直在阅读并尝试如何将XSLT应用于XML。现在,我给出了一个需要从XML元素中筛选出无效字段的项目。java Transformer类用于在XML上应用XSLT。java代码类似于oracle教程中“编写XSLT转换”一节。我已经添加了下面的xml和xsl,并运行教程页面中描述的代码。我的目标是提取单引号和双引号以及以下字符 XML文件

  • 问题内容: 是否可以使用正则表达式删除文本中的小词?例如,我有以下字符串(文本): 我想删除所有不超过3个字符的单词。结果应为: 使用正则表达式或任何其他python函数可以做到吗? 谢谢。 问题答案: 当然,这也不难: 上面的表达式选择任何以某些非单词字符开头的单词(本质上是空格或开头),其长度在1-3个字符之间,并以单词边界结尾。 该边界的比赛是很重要的位置,他们保证你不匹配只是一个字的第一个

  • 问题内容: 我正在使用python进行数据清理练习,正在清理的文本包含我要删除的意大利语单词。我一直在网上搜索是否可以使用nltk之类的工具包在Python上执行此操作。 例如给出一些文本: 我想留下: 有人知道如何做到这一点吗?任何帮助将非常感激。 问题答案: 您可以使用NLTK的语料库: 不幸的是, 艾奥 恰好是一个英语单词。通常,可能很难确定一个单词是否为英语。

  • 我想从文件。 示例: 我想给我们一种动态命令,因为我不必每次为每个用户手动输入。 我试过了 但这并没有达到预期的效果。

  • 问题内容: 以下示例: 如何删除后两个重复项和? 结果应该看起来像 仅应删除第二个重复项,并且不应更改单词的顺序! 问题答案: