使用XSLT仅显示来自xml的xml文件中非空或零的记录

时间:2014-08-04 11:21:11

标签: xml solr xslt-2.0

我正在使用xslt 2.0版本并检索记录表格 SOLR XML

这是我的产品表的solr xml格式。

<doc>
<int name="Id">1</int>
<str name="Name">$5 Virtual Gift Card</str>
<float name="Price"></float>
<str name="SeName">5-virtual-gift-card</str>
<float name="OldPrice">0.0</float>
</doc>

我想只在XML文件中显示产品表中非空或零字段的那些记录。

请给我一些建议。

1 个答案:

答案 0 :(得分:1)

您可以尝试在solr中使用xslt:

<xsl:stylesheet version='2.0'
    xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

  <xsl:output
       method="xml"
       encoding="utf-8"
       media-type="application/xml"
       cdata-section-elements="shortdescription"
  />
  <xsl:template match='/'>

    <items>
         <xsl:apply-templates select="response/result/doc"/>
    </items>

  </xsl:template>

  <!-- search results xslt -->
  <xsl:template match="doc">
    <xsl:variable name="Price" select="format-number(*[@name = 'Price'], '#.0000###')"/>

    <xsl:variable name="PriceStringToInt" select="number($Price)"/>

    <!--Check some conditions like Price grater zero, price not equal to zero, price not null -->
    <xsl:if test="$PriceStringToInt > 0 and $PriceStringToInt != 0 and $Price != ''>

    <item>
       <!--Price field-->
       <price><xsl:value-of select="$Price"/></price>
    </item>
    </xsl:if>
  </xsl:template>

</xsl:stylesheet>