如何循环在父节点中重复的XML属性?

时间:2019-04-29 20:04:18

标签: xml xslt

这是我的XML(存储在表格列中)

 <?xml version="1.0" encoding="UTF-8" standalone="no"?><report rep_name="test" rep_id="1" rep_link="www.report1.com"> </report>

我的xsl类似于代码部分

<xsl:stylesheet version="1.0">
<xsl:template match="/">
 <html>
     <body>
         <xsl:for-each select="/report">
              <table>
                 <tr>
                   <td>Name: </td>
                   <td> <xsl:value-of select='@rep_name"/> </td>
                 </tr>
                 <tr>
                   <td>ID: </td>
                   <td> <xsl:value-of select='@rep_id"/> </td>
                 </tr>
                <xsl:choose>
                <xsl:when test="@rep_link!='NA'">
                 <tr>
                   <td>Link: </td>
                   <td> <xsl:value-of select='@rep_link"/> </td>
                 </tr>
               </xsl:when>
              </xsl:choose>
              </table>
       </xsl:for-each>
   </body>
  </html>
</xsl:tempalte>
</xsl:stylesheet>
当前解析并显示值的

  

名称:测试

     

ID:1

     

链接:www.report1.com

现在需要的是可能有更多的链接属性流入,我必须循环处理它。

<?xml version="1.0" encoding="UTF-8" standalone="no"?><report rep_name="test" rep_id="1" rep_link="www.report1.com" rep_link="www.report2.com" rep_link="www.report3.com"> </report>

在上面的xsl中,如果我只想循环“链接”属性,我尝试按如下所示添加for-each循环,但是它不起作用,

<xsl:choose>
    <xsl:when test="@rep_link!='NA'">
           <xsl:for-each select ="rep_link">
                 <tr>
                     <td>Link: </td>
                     <td> <xsl:value-of select='@rep_link"/> </td>
                 </tr>
            </xsl:for-each>
     </xsl:when>
 </xsl:choose>

输出应该是这样的,

  

名称:测试

     

ID:1

     

链接:www.report1.com

     

链接:www.report2.com

     

链接:www.report3.com

我当前的XSL版本与当前的XML值配合正常。当我对循环进行更改时,由于出了点问题,整个显示只是空白页。

请帮助!

我尝试引入for-each循环,但是它不起作用。

0 个答案:

没有答案