我有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>
答案 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
为空集是空字符串。