XSLT / XML - 无法读取元素的读取属性

时间:2014-05-29 20:06:06

标签: xml xslt xpath

我的xml看起来像这样:

<Context IsFollowA="0" IsFollowB="1">
    <Info>
        <Name>Rob</Name>
        ...
    </Info>
</Context>

在我的xslt中,我有这些陈述:

<xsl:value-of select="concat('x=[', //Context/Info/Name, ']')" /><br/>
<xsl:value-of select="concat('y=[', //Context/@IsFollowA, ']')" /><br/>
<xsl:value-of select="concat('z=[', //Context/@IsFollowB, ']')" /><br/>

我的输出是:

x=[Rob]
y=[]
z=[]

我尝试了几条不同的路径而没有运气。我只是无法正确设置值。我做的事情有多荒谬吗?我不是xslt的专家,所以我很遗憾这很简单。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

虽然从您提供的输入中不清楚,但一个可能的问题可能是: 有多个Context元素, 其中一个可能具有如下属性:

IsFollowA="" IsFollowB=""  

然后,当您的XPATH使用//时,我们无法保证所有三行都引用相同的元素。

您可以尝试:

<xsl:for-each select="//Context"> 
 <xsl:value-of select="concat('x=[', ./Info/Name, ']')" /><br/> 
 <xsl:value-of select="concat('y=[', ./@IsFollowA, ']')" /><br/> 
 <xsl:value-of select="concat('z=[', ./@IsFollowB, ']')" /><br/> 
</xsl:for-each>

答案 1 :(得分:0)

虚假警报......在我收到之前,我正在查看的xml被另一项服务(以及剥离的属性)改变了。抱歉误导。