[英]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.