URL中的编码周期 - XSLT

时间:2014-02-03 18:03:56

标签: xml url xslt solrj

我一直在使用基于SolrJ的Java客户端,该客户端构建/发送查询到外部Solr实例并将其响应处理回Web应用程序。我有一个名为response.xslt的XSLT,其中指定了本地Solr架构和UI之间的所有必要映射。就我而言,我一直在尝试根据下面的SOLR响应来构建和显示方面:

<facets>
    <facet name="domain">
        <facetEntry count="10">blogspot.co.uk</facetEntry>
        <facetEntry count="6">indys.org.uk</facetEntry>
        <facetEntry count="3">royalcanin.co.uk</facetEntry>
        <facetEntry count="1">faerie-tales.co.uk</facetEntry>
        <facetEntry count="1">polishbeautyclinic.co.uk</facetEntry>
        <facetEntry count="1">shua.org.uk</facetEntry>
        <facetEntry count="1">sunnyharbour.org.uk</facetEntry>
    </facet>
</facets>

我的Web应用程序返回的XML如下所示:

   <sear:FACET NAME="local36" COUNT="20">
               <sear:FACET_VALUES KEY="blogspot.co.uk" VALUE="10"/>
               <sear:FACET_VALUES KEY="indys.org.uk" VALUE="6"/>
               <sear:FACET_VALUES KEY="royalcanin.co.uk" VALUE="3"/>
               <sear:FACET_VALUES KEY="faerie-tales.co.uk" VALUE="1"/>
               <sear:FACET_VALUES KEY="polishbeautyclinic.co.uk" VALUE="1"/>
               <sear:FACET_VALUES KEY="shua.org.uk" VALUE="1"/>
               <sear:FACET_VALUES KEY="sunnyharbour.org.uk" VALUE="1"/>
   </sear:FACET>

然而,错误地生成了UI的最终构面结构。简而言之,它只会多次显示最后一个值“sunnyharbour.org.uk”。我的第一个想法是,由于某些原因,URL中的完整停止/句点会触发此类UI行为,因此我按如下方式对响应进行了编码:

<sear:FACET NAME="local36" COUNT="20">
               <sear:FACET_VALUES KEY="blogspot" VALUE="10"/>
               <sear:FACET_VALUES KEY="indys" VALUE="6"/>
               <sear:FACET_VALUES KEY="royalcanin" VALUE="3"/>
               <sear:FACET_VALUES KEY="faerie-tales" VALUE="1"/>
               <sear:FACET_VALUES KEY="polishbeautyclinic" VALUE="1"/>
               <sear:FACET_VALUES KEY="shua" VALUE="1"/>
               <sear:FACET_VALUES KEY="sunnyharbour" VALUE="1"/>
   </sear:FACET>

通过这种方式,可以按预期生成构面。

我的回复文件如下所示:

<xsl:template match="facets">
    <xsl:apply-templates select="facet" />
</xsl:template>

<xsl:template match="facet">
</xsl:template> 

<xsl:template match="facet[@name='domain']">
    <sear:FACET NAME="local36" COUNT="{count(facetEntry)}">         
        <xsl:apply-templates select="facetEntry" />
    </sear:FACET>

<xsl:template match="facetEntry">
    <sear:FACET_VALUES VALUE="{@count}" KEY="{.}" />                    
</xsl:template>

我不确定这是最好的行动方案,但原则上我希望能够对URL中的句点进行编码。你能帮帮我吗?

谢谢,

0 个答案:

没有答案