如何使用XSL获取XML中cell元素的value属性值
提取XML中cell元素value属性值的XSL解决方案
没问题,这事儿很简单,我直接给你写个能用的XSLT示例,轻松拿到你要的SUPERMERCADO值。
首先先确认你的XML结构(你给出的单个cell元素):
<cell colid="0" name="TIPO" status="FREJECT" value="SUPERMERCADO" page="0" left="254" top="1633" width="346" height="38" />
基础版XSLT代码
如果这个cell元素就是XML的根节点,用下面的样式表就能直接提取value属性值:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- 匹配XML根节点 --> <xsl:template match="/"> <!-- 提取cell元素的value属性 --> <xsl:value-of select="cell/@value"/> </xsl:template> </xsl:stylesheet>
适配嵌套结构的情况
如果你的cell元素是嵌套在其他父节点里的(比如下面这种结构):
<document> <cell colid="0" name="TIPO" status="FREJECT" value="SUPERMERCADO" page="0" left="254" top="1633" width="346" height="38" /> </document>
那只需要修改select的路径就行,两种方式可选:
- 精确匹配路径:
document/cell/@value - 全局查找所有cell元素:
//cell/@value(不管它在哪个层级)
修改后的模板示例:
<xsl:template match="/"> <xsl:value-of select="//cell/@value"/> </xsl:template>
额外说明
- 运行这个XSLT转换后,输出结果就是纯文本
SUPERMERCADO;如果需要把结果包裹在自定义标签里(比如<result>),可以把模板改成这样:<xsl:template match="/"> <result> <xsl:value-of select="cell/@value"/> </result> </xsl:template> - 这个方案用的是XSLT 1.0,几乎所有XML处理器都支持,兼容性拉满。
内容的提问来源于stack exchange,提问作者Alvarows
相关产品推荐
相关产品推荐

