【发布时间】:2014-05-22 23:31:03
【问题描述】:
我在 XSLT 1.0 中有一个简单的单字通配符参数,称为“搜索”。 我使用 contains 函数返回结果。 如何在搜索结果中突出显示此通配符?
这是我的 xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:param name="search"></xsl:param>
<xsl:key name="uniquePublicationsGroupHeading" match="organisationUnitDetails/person/publications/publicationsgroup" use="publicationsgroupheading" />
<xsl:template match="/">
<xsl:call-template name="publicationsYearIndex"></xsl:call-template>
<xsl:for-each select="//publicationsgroup[generate-id(.)=generate-id(key('uniquePublicationsGroupHeading',publicationsgroupheading))]">
<xsl:sort select="publicationsgroupheading" data-type="number" order="descending"/>
<h4>Publications - <xsl:value-of select="publicationsgroupheading"/></h4>
<ol>
<xsl:for-each select="key('uniquePublicationsGroupHeading',publicationsgroupheading)">
<xsl:for-each select="publicationslist/publicationdetails">
<xsl:if test="contains(translate(current(),$uppercase,$lowercase),translate($search,$uppercase,$lowercase))">
<!-- TODO: NEED TO HIGHLIGHT wildcard param '$search' within current()....-->
<li class="margin-bottom"><xsl:value-of select="current()" disable-output-escaping="yes"/></li>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</ol>
</xsl:for-each>
</xsl:template>
【问题讨论】:
-
XSLT 只是将输入的 XML 转换为 HTML 的程序。突出显示将通过更改您输出的 HTML 来处理,因此这与 XSLT 本身几乎没有关系。如果你手动编写 HTML 代码,你会怎么做?将其应用于您正在生成的 HTML。