如何在XML中查找键值对的值

时间:2016-01-14 03:30:05

标签: xml xslt

这是我的XML回复:

<FrontendStatus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                version="1.1" serializerVersion="1.1">
  <Name>jason-P35-DS3</Name>
  <Version>v0.28-pre-3339-g9877c07</Version>
  <State>
    <String>
      <Key>currentlocation</Key><Value>playbackbox</Value>
    </String>
    <String>
      <Key>menutheme</Key><Value>mediacentermenu</Value>
    </String>
    <String>
      <Key>state</Key><Value>idle</Value>
    </String>
  </State>
  <ChapterTimes/>
  <SubtitleTracks/>
  <AudioTracks/>
</FrontendStatus>

我正在尝试输出键“state”的值,并将输出设为

  

空闲

我目前拥有的XSLT是:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output  indent="yes" method="text" encoding="UTF-8" omit-xml-declaration="yes"/>


 <xsl:template match="*">

   <xsl:copy-of select="/*/*[normalize-space(Key)='state']/Value"/>

 </xsl:template>
</xsl:stylesheet>

但我的输出只是空白。

1 个答案:

答案 0 :(得分:0)

对于您的XML,这个XSLT

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:value-of select="//Key[.='state']/following-sibling::Value"/>
  </xsl:template>

</xsl:stylesheet>

将输出

idle
根据要求