以下是XML的剪辑:
<?xml version="1.0" encoding="iso-8859-1" ?>
<NetworkAppliance id="S123456">
<Group id="9">
<Probe id="1">
<Value>74.7</Value>
</Probe>
</NetworkAppliance>
我想获得单点值74.7。有许多具有唯一ID的组和该组下的许多探针,每个组都有唯一的ID,每个ID都有值。
我正在寻找可以获得这一值的XSLT代码示例。以下是我所拥有的不起作用:
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="3.2" />
<xsl:template match="NetworkAppliance">
<xsl:apply-templates select="Group[@id='9']"/>
</xsl:template>
<xsl:template match="Group">
Temp: <xsl:value-of select="Probe[@id='1']/Value"/>
<br/>
</xsl:template>
</xsl:stylesheet>
这最终对我有用:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="NetworkAppliance/Group[@id=9]/Probe[@id=1]">
Value: <xsl:value-of select="Value" />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:4)
不要忘记您可以一次选择多个级别。修复您的XML:
<?xml version="1.0" encoding="iso-8859-1" ?>
<NetworkAppliance id="S123456">
<Group id="9">
<Probe id="1">
<Value>74.7</Value>
</Probe>
</Group>
</NetworkAppliance>
并使用此样式表:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="3.2" />
<xsl:template match="/">
Temp: <xsl:value-of select="//Group[@id='9']/Probe[@id='1']/Value"/>
<br/>
</xsl:template>
</xsl:stylesheet>
我们可以选择您感兴趣的一件商品。
注意事项:
//
部分意味着在整个树中搜索Group
个节点,找到它们处于任何深度的Group
个节点。[@id='9']
部分会选择Group
为9 {/ 1}的id
个节点
Probe[@id='1']
部分会选择Group
节点所在的id
个节点的子节点,依此类推。答案 1 :(得分:1)
<xsl:value-of select="/NetworkAppliance/Group[@id=9]/Probe[@id=1]/Value"/>
答案 2 :(得分:0)
节点值的xpath为/node/text()
所以
<xsl:value-of select="Probe[@id='1']/text()"/>
答案 3 :(得分:0)
XSLT只是框中的工具之一,没有XPath。