簡體   English   中英

XSLT如何獲取以下兄弟節點的屬性值?

[英]XSLT How to get an attribute value of the following-sibling node?

我有這個XML:

<Items>
  <Car name="12">Mercedes</Car>
  <Bike name="23">Gt</Bike>
  <House name="gt">123</House>
  <Skate name="as">111</Skate>
  <Plane name="bb">5522</Plane>
  <tv name="sss">Sony</tv>
</Items>

以下是XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="Items">
    <table>
      <xsl:for-each select="*[position() mod 2 != 0]">
        <tr>
          <td>
            <xsl:value-of select="name()"/>
          </td>
          <td>
            <xsl:value-of select="."/>
          </td>
          <td>
            <xsl:value-of select="name(following-sibling::*)"/>
          </td>
          <td>
            <xsl:value-of select="following-sibling::*"/>
          </td>
        </tr>
      </xsl:for-each>
    </table>
  </xsl:template>
</xsl:stylesheet>

我得到的輸出是:

    <table>
  <tr>
    <td>Car</td>
    <td>Mercedes</td>
    <td>Bike</td>
    <td>Gt</td>
  </tr>
  <tr>
    <td>House</td>
    <td>123</td>
    <td>Skate</td>
    <td>111</td>
  </tr>
  <tr>
    <td>Plane</td>
    <td>5522</td>
    <td>tv</td>
    <td>Sony</td>
  </tr>
</table>

但我需要的是屬性@name而不是節點名稱...我該怎么做? 我需要的是這個:

<table>
  <tr>
    <td>12</td>
    <td>Mercedes</td>
    <td>23</td>
    <td>Gt</td>
  </tr>
  <tr>
    <td>gt</td>
    <td>123</td>
    <td>as</td>
    <td>111</td>
  </tr>
  <tr>
    <td>bb</td>
    <td>5522</td>
    <td>ss</td>
    <td>sony</td>
  </tr>
</table>

我知道在第一個<td>我可以使用@name ,但是如何在另一個<td>中獲取以下兄弟節點的屬性“name”?

<xsl:value-of select="following-sibling::*/@name"/>

這應該返回以下兄弟的name屬性。

編輯


它出現

 <xsl:value-of select="following-sibling::*[1]/@name"/>

這是正確的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM