1

嗨,我有一个这样的 XML。

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

请帮助我编写 XSLT 以获取 INSTANCE_NAME = 'DEF' 的 VALUE 标记的值。谢谢

4

2 回答 2

1

选择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
于 2013-11-12T04:15:10.960 回答
1

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

/RECORDSET/ROW[INSTANCE_NAME = 'DEF']

因此要提取它们的值,您将使用

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

您可以将方括号读作“where”或“ such that”,即找到 RECORDSET 元素,然后在每个元素中找到ROW元素,然后在每个元素中找到元素. INSTANCE_NAME = 'DEF'VALUE

于 2013-11-11T13:15:15.417 回答