在XSL中读取XML元素属性

时间:2014-07-22 19:02:35

标签: xml xslt

我们说我有以下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。感谢。

1 个答案:

答案 0 :(得分:1)

这里有两个问题。首先,要访问属性,您需要在其前面添加@符号。其次,在 xsl:for-each 中,您当前的上下文是 REVIEW 节点,因此您不需要在表达式中再次包含该节点。

试试这个

<xsl:if test="@ATTR1 != ''">
     Something: <xsl:value-of select="@ATTR1" />
     <br/>
</xsl:if>