我们说我有以下XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Reviews>
<REVIEW ATTR1="some text" ATTR2="some other text">
</REVIEW>
</Reviews>
我很难让我的xsl文件工作。这是相关的一点:
<div style="width:300px; float:left; padding:10px 20px 0 0; vertical-align:top">
<div style="font-size:14px; padding-left:3px">
<xsl:for-each select="Reviews/REVIEW">
<xsl:if test="REVIEW/ATTR1 != ''">
Something: <xsl:value-of select="REVIEW/ATTR1" />
<br/>
</xsl:if>
</xsl:for-each>
</div>
</div>
即使ATTR1中存在某些内容,if if test也会返回false。我尝试过使用Reviews / REVIEW / ATTR1和ATTR1,但没有任何效果。我甚至不确定这是从元素中获取属性的方法。我查了W3学校,但他们的教程没有提到如何获得属性。非常新的XML和全新的XSL。感谢。
答案 0 :(得分:1)
这里有两个问题。首先,要访问属性,您需要在其前面添加@
符号。其次,在 xsl:for-each 中,您当前的上下文是 REVIEW 节点,因此您不需要在表达式中再次包含该节点。
试试这个
<xsl:if test="@ATTR1 != ''">
Something: <xsl:value-of select="@ATTR1" />
<br/>
</xsl:if>