使用XSLT

时间:2018-02-13 13:29:56

标签: html css xml xslt

我正在尝试打印这样的输出,这只是通过替换

生成的
xsl:value-of select ="@new_bname"/> with A and other 

xsl:value-of select ="@new_bname"/> with B.

Output i want

但我得到这样的输出

Output i am getting which i don't want

我的HTML代码包括xslt

<xsl:for-each select="//bankinfo/items">


                <div class="col-sm-12 pad0">
                  <xsl:if test="position() mod 2 != 0">
                <div class="col-sm-6 pad0l sm-pad0r">
                  <button class="btn-block border-grey text-c pad5 radius-20 bg-grey outline-none ">
                    <a href="/ifsc-code-v1.aspx?page_mode=2&amp;bank_url={@url_bank}" >
                      <xsl:value-of select ="@new_bname"/>

                    </a>
                  </button>
                </div>
                   </xsl:if>

                <xsl:if test="position() mod 2 = 0">
                <div class="col-sm-6 pad0r sm-pad0l sm-marg5t">
                  <button class="btn-block border-grey text-c pad5 radius-20 bg-grey outline-none ">
                    <a href="/ifsc-code-v1.aspx?page_mode=2&amp;bank_url={@url_bank}" >
                    <xsl:value-of select ="@new_bname"/> 
                    </a>
                  </button>
                </div>
              </xsl:if>
              </div>
              <div class="clearfix"></div>
              <div class="pad5t"></div>

              </xsl:for-each>

我希望银行名称1在A处,银行名称2在B处。 同样一直持续到我XML的最后一项。

修改 @new_bname来自数据库,通过控制器,然后通过XSLT呈现给HTML。 我正在使用<xsl:for-each>XML中的所有项进行迭代,并将其放在HTML上。 但是我想像第1号图片一样并排第一和第二银行名称。 我希望第一个div中的第一个@new_bname和下一个div中的下一个@new_bname。但是像这样,我在两个不同的列中生成相同的bankNames

编辑2 通过硬编码bankname值来预期输出1

expected out put

XML结构

<items url_bank="a-c-b-ld" new_bname="ICICI"/>

<items url_bank="a-d-c-bank" new_bname="HDFC"/>

<items url_bank="a-m-c-b" new_bname="Bank OF AMERICA"/>

2 个答案:

答案 0 :(得分:1)

我不完全确定您的预期输出应该是什么,但是这个简化的XSLT可能会让您在起点上获得所需的结构......

<xsl:template match="/">
  <xsl:for-each select="//bankinfo/items[position() mod 2 != 0]">
    <div class="col-sm-12 pad0">
      <div class="col-sm-6 pad0l sm-pad0r">
        <xsl:apply-templates select="self::*" />
      </div>
      <div class="col-sm-6 pad0r sm-pad0l sm-marg5t">
        <xsl:apply-templates select="following-sibling::items[1]" />
      </div>
    </div> 
  </xsl:for-each>
</xsl:template>

<xsl:template match="items">
  <xsl:value-of select ="@new_bname"/>
</xsl:template>

我在这里使用了一个模板,以避免重复代码。

答案 1 :(得分:0)

<b><xsl:value-of select="./following-sibling::items[1]/@url_bank"/></b>
<b><xsl:value-of select="./following-sibling::items[2]/@url_bank"/></b>

使用上面的代码我得到了所需的属性

使用此功能,我可以在3个div中获得所需的输出。 更改&#39; position() mod&#39;根据您的需要增加号码<xsl:apply-templates select="following-sibling::items[<!--1,2,3,4(any number)-->]" />