XSLT节点遍历

XSLT节点遍历,xslt,Xslt,这里是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 我想得到74.7的单

这里是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
我想得到74.7的单点值。有许多具有唯一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>

价值:

节点值的xpath是
/node/text()

所以


节点值的xpath是
/node/text()

所以



XSLT只是盒子里的工具之一,没有它就什么都不是

XSLT只是盒子里的工具之一,没有它就什么都不是

不要忘记,您可以一次选择多个级别。将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>

74.7
使用此样式表:

<?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>

临时雇员:

我们可以挑一件你感兴趣的东西

注意事项:

  • 表达式的
    /
    部分意味着在整个树中搜索
    节点,在节点所在的任何深度查找
    节点
  • [@id='9']
    部分选择id为9的
    节点
  • 紧随其后的
    Probe[@id='1']
    部分选择它找到的
    id
    为1的
    Group
    节点的子节点,依此类推

不要忘记,您可以一次选择多个级别。将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>

74.7
使用此样式表:

<?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>

临时雇员:

我们可以挑一件你感兴趣的东西

注意事项:

  • 表达式的
    /
    部分意味着在整个树中搜索
    节点,在节点所在的任何深度查找
    节点
  • [@id='9']
    部分选择id为9的
    节点
  • 紧随其后的
    Probe[@id='1']
    部分选择它找到的
    id
    为1的
    Group
    节点的子节点,依此类推



当前代码返回什么?运行代码(并修复XML中缺失的标记)我得到以下结果:“Temp:74.7”当前代码返回什么?运行代码(并修复XML中缺失的标记)我得到以下结果:“Temp:74.7”你在哪里看到CDATA分区?你在哪里看到CDATA分区?