Мне нужно помечать слова независимо от регистра.Я нашел этот прекрасно работающий ответ, который выполняет работу с соответствующим регистром .Я внес некоторые изменения, чтобы лучше проиллюстрировать проблему нечувствительности к регистру ...
XML:
<?xml version="1.0" encoding="UTF-8"?>
<file>
<text>
<sentence>The safety of the bank’s safe is insured by Safeco.</sentence>
<sentence>A safe place to shelter during a storm is the cellar.</sentence>
</text>
</file>
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<!-- ============= -->
<xsl:template match="sentence">
<xsl:param name="search-term"/>
<xsl:call-template name="hilite">
<xsl:with-param name="text" select="."/>
<xsl:with-param name="search-string" select="$search-term"/>
</xsl:call-template><xsl:text>
</xsl:text>
</xsl:template>
<!-- ============= -->
<xsl:template name="hilite">
<xsl:param name="text"/>
<xsl:param name="search-string"/>
<xsl:choose>
<xsl:when test="contains($text, $search-string)">
<xsl:value-of select="substring-before($text, $search-string)"/>
<mark>
<xsl:value-of select="$search-string"/>
</mark>
<xsl:call-template name="hilite">
<xsl:with-param name="text" select="substring-after($text, $search-string)"/>
<xsl:with-param name="search-string" select="$search-string"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ============= -->
<xsl:template match="/"><xsl:text>
</xsl:text>
<output><xsl:text>
</xsl:text>
<xsl:apply-templates select="file/text/sentence">
<xsl:with-param name="search-term">safe</xsl:with-param>
</xsl:apply-templates>
</output>
</xsl:template>
<!-- ============= -->
</xsl:stylesheet>
Вывод, который я получаю:
<?xml version="1.0" encoding="UTF-8"?>
<output>
The <mark>safe</mark>ty of the bank’s <mark>safe</mark> is insured by Safeco.
A <mark>safe</mark> place to shelter during a storm is the cellar.
</output>
Но появление сейфа в Safeco не является точным совпадением из-за случая.Поэтому я не получаю желаемый вывод:
<?xml version="1.0" encoding="UTF-8"?>
<output>
The <mark>safe</mark>ty of the bank’s <mark>safe</mark> is insured by <mark>Safe</mark>co.
A <mark>safe</mark> place to shelter during a storm is the cellar.
</output>
Как найти все вхождения независимо от регистра, а также сохранить исходный регистр в выводе?