在XML和XSLT中获取值的条件

时间:2013-12-16 17:18:17

标签: xml xslt

我有xml

<out>   
  <settings>
    <setting name="address1" addr="test1"/>
    <setting name="address2" addr="test2"/>
    <setting name="address3" addr="test3"/>
    <setting name="address4" addr="test4"/>
  </settings>
</out>

如果name属性的条件与相应的值匹配,我想得到值 例如:如果条件是name =“address3”

,则获取test3

下面的内容给出了结果test1,这是错误的

 <xsl:if test="/out/settings/setting/@name='address3'">
        <xsl:value-of select="/out/settings/setting/@addr"/>
 </xsl:if>

1 个答案:

答案 0 :(得分:3)

<xsl:if test="/out/settings/setting/@name='address3'">
如果{em>任何的setting元素的名称为address3,则

为真。

<xsl:value-of select="/out/settings/setting/@addr"/>

将按文档顺序(XSLT 1.0)输出第一个@addr上的setting属性的值,或者输出所有属性的串联(XSLT 2.0)。如果您希望value-of特别是“address3”设置,那么只需执行

<xsl:value-of select="/out/settings/setting[@name='address3']/@addr"/>

不需要进行if检查,因为当没有“address3”setting时,select将为您提供空节点集或序列,value-of为空集是空字符串。