我有 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
将两个字符串转换为相同的大小写,以便在第二个字符串中计算出第一个字符串的字符偏移量,然后从该位置获取原始QualifiedDescription
的substring
。
<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-before
和 substring-after
都返回空字符串),但您明白了。
如果将所有第一个大写和大写的子字符串都大写,则可以不区分大小写:
substring-after(upper-case(QualifiedDescription), upper-case(Model))