繁体   English   中英

嵌套的for-each循环在XSLT中出现问题

[英]Nested for-each loops in getting issue in XSLT

我们在xslt中碰到一个问题,我们试图做一个嵌套的for-each,但是它不读取内部循环。 这是我们尝试过的代码:

XML档案:

 <Rowsets>
    <Rowset>
    <Row>
    <name>BRH</name>
    <desc>---</desc>
    <values>
    <value>
    <from>01/18/2016 16:46:50</from>
    <to>01/18/2016 16:46:53</to>
    <label>MPA000000032</label>
    </value>
                <value>
    <from>01/04/2016 19:51:57</from>
    <to>01/13/2016 19:52:00</to>
    <label>MPA000000014</label>
    </value>

    </values>
            </Row>        
        </Rowset>
    </Rowsets> 

xslt文件:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"  />
   <xsl:template match="/Rowsets">
      <xsl:for-each select="Rowset/Row">
         {"name":"<xsl:value-of select="name" />",
      "desc":" (<xsl:value-of select="desc" />)",

       "values" : [  { <xsl:for-each select="Row/values/value">
                "from" : " /Date(<xsl:value-of select="from" />)/",
         "to" : " /Date(<xsl:value-of select="to" />)/",
         "label" : "<xsl:value-of select="label" />"        

}</xsl:for-each><xsl:if test="./following-sibling::values">,</xsl:if></xsl:for-each>]  
} <xsl:if test="./following-sibling::Row">,</xsl:if></xsl:for-each>

      </xsl:template>
</xsl:stylesheet> 

预期的JSON:

{
  "Rowsets": {
    "Rowset": {
      "Row": [
        {
          "name": "BRH",
          "desc": "---",
          "values": [
            {
              "from": "01/18/2016 16:46:50",
              "to": "01/18/2016 16:46:53",
              "label": "MPA000000032"
            },
            {
              "from": "01/04/2016 19:51:57",
              "to": "01/13/2016 19:52:00",
              "label": "MPA000000014"
            },
            {
              "from": "01/05/2016 13:24:46",
              "to": "01/17/2016 13:24:52",
              "label": "MPA000000029"
            },
            {
              "from": "01/11/2016 16:29:28",
              "to": "01/20/2016 16:29:30",
              "label": "MPA000000008"
            },
            {
              "from": "01/18/2016 12:05:21",
              "to": "01/27/2016 12:05:26",
              "label": "MPA000000036"
            }
          ]
        },
        {
          "name": "ROW-Q103-G2",
          "desc": "Salbatica 1",
          "values": {
            "from": "07/29/2015 09:00:00",
            "to": "07/30/2015 09:00:00",
            "label": "P0007"
          }
        }
      ]
    }
  }
} 

你需要改变

<xsl:for-each select="Row/values/value"

<xsl:for-each select="values/value"

如果Row元素本身包含Row元素,则您的编写方式将可以正常工作。 即上下文节点连续Row ; 您无需在样式表中再次选择它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM