XSLT和Googles自定义XML站点搜索

时间:2011-02-04 05:53:13

标签: xml xslt

我正在使用Googles XML自定义网站搜索(Google XML sitesearch),我在.NET中使用XSLT将结果转换为HTML。我有一些关于XSLT的问题。

1)Google将返回类似于以下内容的内容

<GSP VER="3.2">
  <PARAM name="start" value="0" />
  <PARAM name="num" value="10" />
  <RES>
    <R>
      <PageMap>
        <DataObject>
          <Attribute name="Rating" value="4.5" />
          <Attribute name="RatingCount" value="743" />  
        </DataObject>
      </PageMap>
    </R>
  </RES>
</GSP>

我想知道以下内容:

我如何获得其中一个PARAM(即Start或num)的值? 我如何获得DataObject的一个属性的值?

任何帮助都非常感激。

由于

3 个答案:

答案 0 :(得分:4)

在架构已知时,切勿使用//

要获得起始值使用:

/GSP/PARAM[@name='start']/@value

获取num参数:

/GSP/PARAM[@name='num']/@value

获得评分:

/GSP/RES/R/PageMap/DataObject/Attribute[@name='Rating']/@value

答案 1 :(得分:0)

使用XPath可以像这样引用这些值:

/GSP/PARAM[@name='num']/@value

对于DataObject属性,它将是

//DataObject/Attribute[@name='Rating']/@value

但是你需要澄清你需要获取这些值的上下文,因为在大多数情况下表达式可能会缩短(我使用完整路径)。

答案 2 :(得分:0)

如果需要通过各种上下文中的名称访问此示例中的params,我建议使用密钥。使用键还可以保护您的源不会一次又一次地重复xpath。

<!-- Key declaration -->    
<xsl:key name="gsp-param" match="/GSP/PARAM/@value" use="../@name"/>

<xsl:template name="some-template">
    <!-- Get key value in unknown context -->
    <xsl:value-of select="key('gsp-param', 'num')"/>
</xsl:template>