使用xslt查找文本中的关键字
我想写一个样式表,突出显示文本中的关键字使用xslt查找文本中的关键字,xslt,Xslt,我想写一个样式表,突出显示文本中的关键字 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:template match="/"> <xsl:para
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:param name="keyword">keyword</xsl:param>
<html>
<body>
<xsl:for-each select="element()">
<xsl:variable name="elValue" select="."/>
<xsl:analyze-string select="upper-case(.)" regex="{upper-case($keyword)}*">
<xsl:matching-substring>
<i>
<xsl:value-of select="."/>
</i>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
关键词
我用过正则表达式
我的问题是:整个html输出现在是大写的。我曾尝试使用变量elValue保存原始值,但这不起作用。该变量似乎在每个循环中附加新值(并且不仅包含新值)
是否有方法输出元素的原始格式(无大写)
提前感谢,您可能只想在i.e.上使用
i
标志
考虑发布一个最小但完整的XML输入示例,以及您希望使用XSLT为该示例创建的HTML结果,然后我们可以展示正确的XSLT方法。到目前为止,您只展示了一些XSLT,它们不能满足您的需要,而不允许我们看到您运行它所针对的输入。正确的方法-尽管我不知道“*”是什么应该是在regex属性中执行的。星号字符在原始代码中,我也不完全理解,所以我只是在进行大写转换时编辑了这些内容,并保留了所有其他内容不变。
<xsl:analyze-string select="." regex="{$keyword}*" flags="i">
<xsl:matching-substring>
<i>
<xsl:value-of select="."/>
</i>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>