XSLT 1.0 子字符串之后忽略大小写



我有 2 个这样的 xml 节点,例如:

<Model>GRAND MODUS</Model>
<QualifiedDescription>2008 58 Reg Renault Grand Modus 1.2 TCE Dynamique 5drMetallic Flame Red</QualifiedDescription>

我正在尝试使用子字符串在 Grand Modus 之后拆分限定描述,如下所示:

<xsl:variable name="something"><xsl:value-of select='substring-after(QualifiedDescription, Model)' /></xsl:variable>

但显然,区分大小写是行不通的。是否可以让子字符串之后不区分大小写,但仍返回保留大小写 EG 的输出。

1.2 TCE Dynamique 5drMetallic Flame Red

谢谢。

您可以使用

translate将两个字符串转换为相同的大小写,以便在第二个字符串中计算出第一个字符串的字符偏移量,然后从该位置获取原始QualifiedDescriptionsubstring

<xsl:variable name="uc" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
<xsl:variable name="lc" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:variable name="substrStart" select="
       string-length(substring-before(translate(QualifiedDescription, $uc, $lc),
                                      translate(Model, $uc, $lc)))
     + string-length(Model)
     + 1" /><!-- +1 because string indexes in XPath are 1-based -->
<xsl:variable name="something"
              select="substring(QualifiedDescription, $substrStart)" />

您需要稍微复杂的逻辑来考虑 QualifiedDescription 不包含模型的情况(因为在这种情况下,substring-beforesubstring-after 都返回空字符串),但您明白了。

如果将所有第一个大写和大写的子字符串都大写,则可以不区分大小写:

substring-after(upper-case(QualifiedDescription), upper-case(Model))

相关内容

  • 没有找到相关文章

最新更新