首页 > 解决方案 > 使用 XSLT 1.0 按年份分组日期列表

问题描述

你可以帮帮我吗?我有 XML:

<root>
  <prop>
    <holidays>2011-01-01</holidays>
    <holidays>2011-01-02</holidays>
  ...
    <holidays>2012-01-01</holidays>
    <holidays>2012-01-02</holidays>
  ...
  </prop>
</root>

我需要从中获取以下 JSON:

[
{
"id" : "2011",
"data" : 
[
"2011-01-01","2011-01-02" ...
]
},
{
"id" : "2012",
"data" : 
[
"2012-01-01","2012-01-02" ...
]
},
...
]

使用 XSLT 转换 1.0

预先感谢您的帮助!

更新:这是一个适合我的解决方案

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" exclude-result-prefixes="xsl" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="text"/>
<xsl:key name="group" match="prop/holidays" use="substring-before(string(.),'-')"/>
<xsl:template match="root">[
<xsl:apply-templates select="prop/holidays[generate-id(.) = generate-id(key('group',substring-before(string(.),'-')))]" />]</xsl:template>
<xsl:template match="holidays">{
"id" : "<xsl:value-of select="substring-before(string(.),'-')"/>",
"data" : 
[
<xsl:for-each select="key('group',substring-before(string(.),'-'))">"<xsl:value-of select="."/>",</xsl:for-each>
]
},
</xsl:template>
</xsl:stylesheet>   

    

标签: xslt-1.0

解决方案


推荐阅读