XSLT从XML获取价值

时间:2013-05-29 04:22:15

标签: xslt

我有这样的XML

<A Rank="1">
  <a1>1</a2>
  <a1>1</a2>
</A1>
<A Rank="2">
  <a1>1</a2>
  <a1>1</a2>
</A1>

我的XSLT示例用于使用该Rank值。

<tr>
  <td align="left">
    <xsl:text>#</xsl:text>
    <xsl:value-of select="@Rank"/>
    <xsl:text>:</xsl:text>
    <xsl:value-of select="a1"/>
  </td>
</tr>

我想打印排名值。我怎么能?

1 个答案:

答案 0 :(得分:0)

您的正确XSLT应如下所示:

<t>
  <A Rank="1">
    <a1>1</a1>
    <a2>1</a2>
  </A>
  <A Rank="2">
    <a1>1</a1>
    <a2>4</a2>
  </A>
</t>

<强> XSLT1:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:template match="A">
    <tr>
      <td align="left">
        <xsl:text>#</xsl:text>
        <xsl:value-of select="@Rank"/>
        <xsl:text>:</xsl:text>
        <xsl:value-of select="sum(child::*)"/>
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>

<强> OUTPUT1:

  <tr><td align="left">#1:2</td></tr>
  <tr><td align="left">#2:5</td></tr>

<强> xslt2:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:template match="A">
    <tr>
      <td align="left">
        <xsl:text>#</xsl:text>
        <xsl:value-of select="@Rank"/>
        <xsl:text>:</xsl:text>
        <xsl:for-each select="child::*">
          <xsl:value-of select="."/>
          <xsl:if test="position()!=last()">
            <xsl:text>:</xsl:text>
          </xsl:if>
        </xsl:for-each>
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>

OUTPUT2:

  <tr><td align="left">#1:1:1</td></tr>
  <tr><td align="left">#2:1:4</td></tr>