XSLT选择特定的ROW

时间:2013-11-11 13:12:08

标签: xml xslt

嗨我有这样的XML。

<RECORDSET>
<ROW>  
 <INSTANCE_NAME>ABC</INSTANCE_NAME>
 <VALUE>12000</VALUE>  
</ROW>
 <ROW>
 <INSTANCE_NAME>DEF</INSTANCE_NAME>
 <VALUE>1500</VALUE>  
</ROW> 
</RECORDSET>

请帮我写XSLT来获取VALUE标签的值,INSTANCE_NAME ='DEF'。 感谢

2 个答案:

答案 0 :(得分:0)

您正在寻找的概念称为谓词 - 以查找ROW INSTANCE_NAME您可以使用的DEF元素

/RECORDSET/ROW[INSTANCE_NAME = 'DEF']

所以要提取它们的值,你会使用

/RECORDSET/ROW[INSTANCE_NAME = 'DEF']/VALUE

您可以将方括号读作“where”或“that that”,即找到RECORDSET元素,然后在每个元素中找到ROW元素,使< / em> INSTANCE_NAME = 'DEF',并在每个中找到VALUE元素。

答案 1 :(得分:0)

根据VALUE

选择INSTANCE_NAME

<强> XML

<RECORDSET>
<ROW>  
 <INSTANCE_NAME>ABC</INSTANCE_NAME>
 <VALUE>12000</VALUE>  
</ROW>
 <ROW>
 <INSTANCE_NAME>DEF</INSTANCE_NAME>
 <VALUE>1500</VALUE>  
</ROW> 
</RECORDSET>

<强> XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:output omit-xml-declaration="yes" indent="yes" />
   <xsl:strip-space elements="*" />
   <xsl:template match="RECORDSET">
      <xsl:value-of select="ROW[INSTANCE_NAME = 'DEF']/VALUE" />
   </xsl:template>
</xsl:stylesheet>

<强>输出:

1500