2009-10-13 168 views
1

這裏是剪斷,它的XML的:XSLT節點穿越

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

什麼是您當前密碼的回報? – dnagirl 2009-10-13 19:11:54

+0

運行你的代碼(並在你的XML中修復一個缺失的標籤)我得到如下結果:「Temp:74.7」 – 2009-10-13 19:16:58

回答

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
  • idProbe[@id='1']立即部,其選擇它發現其中id爲1,等等Group節點的那些孩子後。
0

爲節點的值的XPath是/node/text()

所以

<xsl:value-of select="Probe[@id='1']/text()"/> 
+0

你在哪看到CDATA部分? – 2009-10-13 19:18:32

+0

對不起,用錯了名詞 – dnagirl 2009-10-13 20:01:47

0

XSLT只是框中的工具之一,沒有XPath就沒有。

1
<xsl:value-of select="/NetworkAppliance/Group[@id=9]/Probe[@id=1]/Value"/>