使用xsl获取无界xml中的最后一个元素

时间:2016-08-28 13:44:22

标签: xml xslt xpath

我有一个无限制的XML,它根据请求URL而改变
假设URL:
localhost / Years

<Response>
  <Record>
    <Years>1425</Years>
  </Record>
  <Record>
    <Years>233</Years>
  </Record>
</Response>

假设网址:
localhost / Names

<Response>
  <Record>
    <Names>John</Names>
  </Record>
  <Record>
    <Names>Bisho</Names>
  </Record>
  <Record>
    <Names>Curry</Names>
  </Record>
</Response>

假设网址:loaclhost / laptop&amp; mobiles

<Response>
  <Record>
    <laptop>dell</laptop>
    <mobiles>samsung</mobiles>
  </Record>
  <Record>
    <laptop>apple</laptop>
    <mobiles>lenovo</mobiles>
  </Record>
</Response>

需要XSL脚本来获取响应xml中的Last值多年来233或Curry for names等等取决于URL。

2 个答案:

答案 0 :(得分:1)

您应该使用last()函数来获取最后一个元素,并使用text()来获取其值。如果您希望它适用于两个xPath(年份和名称),请使用*

最终的xPath如下:/Response/Record[last()]/*/text()

答案 1 :(得分:1)

以下样式表:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>

<xsl:template match="/Response">
    <xsl:for-each select="Record[last()]/*">
        <xsl:value-of select="."/>
        <xsl:text disable-output-escaping="yes">&#10;</xsl:text>
    </xsl:for-each> 
</xsl:template>

</xsl:stylesheet>

将返回:

233

第一个例子,

Curry

第二个例子,并且:

apple
lenovo

为你的最后一个例子。