gpt4 book ai didi

XSLT 1.0 以及如何在 Text 中找到一些关键字

转载 作者:行者123 更新时间:2023-12-04 05:11:38 25 4
gpt4 key购买 nike

我想使用 XSLT 1.0 在文本中找到一些关键字

  • contentText :海洋天气预报、警告、概要和冰情。数百个陆地和浮标站观测以及海洋天气预报、警告、概要和冰况。数百个陆地和浮标站观测结果。
  • 关键字:“海洋天气,海洋天气,海洋天气”
  • 分隔符:,

  • 以下代码只有一个关键字有效...但我想找到多个关键字(“海洋天气,海洋天气,海洋天气”)
    <xsl:choose>
    '<xsl:when test="contains($contentText,$keyWordLower)">
    <xsl:value-of select="substring-before($contentText,$keyWordLower)" disable-output-escaping="yes"/>
    <span class="texthighlight">
    <xsl:value-of select="$keyWordLower" disable-output-escaping="yes"/>
    </span>
    <!--Recursive call to create the string after keyword-->
    <xsl:call-template name="ReplaceSections">
    <xsl:with-param name="contentText" select="substring-after($contentText,$keyWordLower)"/>
    <xsl:with-param name="keyWordLower" select="$keyWordLower"/>
    </xsl:call-template>
    </xsl:when> <xsl:otherwise>
    <xsl:value-of select="$contentText"/>
    </xsl:otherwise>
    </xsl:choose>

    最佳答案

    本次改造 :

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>

    <xsl:param name="pKeyWords">
    <kw>Marine weather</kw>
    <kw>marine weather</kw>
    <kw>Marine Weather</kw>
    </xsl:param>

    <xsl:variable name="vKeyWords" select=
    "document('')/*/xsl:param[@name='pKeyWords']/*"/>

    <xsl:template match="/*">
    <t><xsl:apply-templates/></t>
    </xsl:template>

    <xsl:template match="text()" name="highlightKWs">
    <xsl:param name="pText" select="."/>

    <xsl:if test="not($vKeyWords[contains($pText,.)])">
    <xsl:value-of select="$pText"/>
    </xsl:if>

    <xsl:apply-templates select="$vKeyWords[contains($pText,.)]">
    <xsl:sort select="string-length(substring-before($pText,.))"
    data-type="number"/>
    <xsl:with-param name="pText" select="$pText"/>
    </xsl:apply-templates>
    </xsl:template>

    <xsl:template match="kw">
    <xsl:param name="pText"/>
    <xsl:if test="position()=1">
    <xsl:value-of select="substring-before($pText, .)"/>
    <span class="texthighlight">
    <xsl:value-of select="."/>
    </span>
    <xsl:call-template name="highlightKWs">
    <xsl:with-param name="pText" select="substring-after($pText, .)"/>
    </xsl:call-template>
    </xsl:if>
    </xsl:template>
    </xsl:stylesheet>

    当应用于以下 XML 文档时:
    <t>Marine weather forecasts,
    warnings, synopsis, and ice conditions.
    Hundreds of land and buoy station observations
    across and marine weather forecasts, warnings,
    synopsis, and ice conditions. Hundreds of land
    and buoy station observations across.</t>

    产生想要的正确结果:
    <t>
    <span class="texthighlight">Marine weather</span> forecasts,
    warnings, synopsis, and ice conditions.
    Hundreds of land and buoy station observations
    across and <span class="texthighlight">marine weather</span> forecasts, warnings,
    synopsis, and ice conditions. Hundreds of land
    and buoy station observations across.</t>

    关于XSLT 1.0 以及如何在 Text 中找到一些关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14861148/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com