Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html XSL:for-each-in-each-for-each迭代数据_Html_Xml_Xslt_Xslt 1.0 - Fatal编程技术网

Html XSL:for-each-in-each-for-each迭代数据

Html XSL:for-each-in-each-for-each迭代数据,html,xml,xslt,xslt-1.0,Html,Xml,Xslt,Xslt 1.0,我需要在另一个public secuanci中执行一个循环序列,并获取每个人和每个状态的数据,代码的问题是它没有迭代我正在传递的数据。当我有空字段时,我需要第二个帮助,然后我可以使用Word内容控件 XML文件 <?xml version="1.0"?> <emailList> <person> <name>name 1</name> <email>g@gmail.com</email>

我需要在另一个public secuanci中执行一个循环序列,并获取每个人和每个状态的数据,代码的问题是它没有迭代我正在传递的数据。当我有空字段时,我需要第二个帮助,然后我可以使用Word内容控件

XML文件

<?xml version="1.0"?>
<emailList>
  <person>
    <name>name 1</name>
    <email>g@gmail.com</email>
    <status>
        <active>1</active>
        <active>2</active>
        <active>3</active>
    </status>
  </person>
  <person>
    <name>name 2</name>
    <email>n@hotmail.com</email>
    <status>
        <active>4</active>
        <active>5</active>
    </status>
  </person>
</emailList>
XSL文件

<xsl:stylesheet version="1.0">
<html xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0">
  <head>
    <title>Email Listing</title>
  </head>
  <body>
    <table>
      <tr>
        <th>Name</th>
        <th>E-mail Address</th>
        <th>Status</th>
      </tr>
      <xsl:for-each select="emailList/person">
        <tr>
          <td><xsl:value-of select="name"/></td>
          <td><xsl:value-of select="email"/></td>
          <td>
            <xsl:for-each select="emailList/person/status">
            <xsl:value-of select="active"/>
            </xsl:for-each>
          </td>
        </tr>
      </xsl:for-each>
    </table>
  </body>
</html>
内部xsl:for-each将与外部xsl:for-each相对,外部xsl:for-each选择person

试着把它改成这个

<xsl:for-each select="status/active">
    <xsl:value-of select="."/>
</xsl:for-each>
更好的是,升级到XSLT2.0并完全取消xsl:for-each

<td>
    <xsl:value-of select="status/active" separator="," />
</td>
<td>
    <xsl:value-of select="status/active" separator="," />
</td>
<xsl:template match="/">
    <html>
        <head>
            <title>Email Listing</title>
        </head>
        <body>
            <table>
                <tr>
                    <th>Name</th>
                    <th>E-mail Address</th>
                    <th>Status</th>
                </tr>
                <xsl:for-each select="emailList/person">
                    <tr>
                        <td><xsl:value-of select="name"/></td>
                        <td><xsl:value-of select="email"/></td>
                        <td>
                            <xsl:for-each select="status">
                                <xsl:value-of select="active"/>
                            </xsl:for-each>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
        </body>
    </html>
    </xsl:template>