xslt-1.0 - 使用 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>
解决方案
推荐阅读
- python - 无法连接到 kivy 中的 X 服务器
- github - Github 仅允许协作者通过拉取请求推送更改
- nuxt.js - 从链接进入网站时滚动到永久链接锚点
- java - Easy Program 在多个 Action Listeners 时抛出 NullPointerException
- java - 程序显示缺少语句。为什么会出现这个错误?
- javascript - 内部/模块/cjs/loader.js:968 抛出错误;^ 错误:找不到模块“../../temp”
- javascript - 使用来自不同 JS 文件的函数时,电子错误“不是函数”
- python - 从 Surprise 中的预定义折叠加载数据时如何构建完整的训练集?
- security - 是否可以在 github 市场中更改操作的版本?
- reactjs - 如何使用 React JSX 在 Typescript 中将通用箭头函数实现为接口属性