我有2个像这样的xml节点,例如:
<Model>GRAND MODUS</Model>
<QualifiedDescription>2008 58 Reg Renault Grand Modus 1.2 TCE Dynamique 5drMetallic Flame Red</QualifiedDescription>
我正在尝试使用substring-after在 Grand Modus 之后拆分 QualifiedDescription ,如下所示:
<xsl:variable name="something"><xsl:value-of select='substring-after(QualifiedDescription, Model)' /></xsl:variable>
但很明显,它不具备区分大小写的功能。是否有可能使substring-after工作区不区分大小写,但仍然返回保留EG的情况下的输出。
1.2 TCE Dynamique 5drMetallic Flame Red
感谢。
答案 0 :(得分:3)
您可以使用translate
将两个字符串转换为相同的大小写,以便在第二个字符串中计算出第一个字符的偏移量,然后获取原始的<{1}} substring
来自那个位置。
QualifiedDescription
您需要稍微复杂的逻辑来考虑QualifiedDescription不包含模型的情况(因为在这种情况下,<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)" />
和substring-before
都返回空字符串)但是你得到了想法。
答案 1 :(得分:0)
如果大写所有first和substring大写,则可以不区分大小写:
substring-after(upper-case(QualifiedDescription), upper-case(Model))