gpt4 book ai didi

xml - 使用 XSLT 将分隔符转换为包装器

转载 作者:数据小太阳 更新时间:2023-10-29 01:51:05 25 4
gpt4 key购买 nike

我有一段 XML 想用 XSLT 转换(使用 xsltproc——所以只有 XSLT 1.0)。原始 XML 使用一些标记作为分隔符,如下所示:

<container>
<element />
<element />
<separator />
<element />
<element />
<element />
<separator />
<element />
</container>

我需要将其转换为一种包装这些元素的格式。所以我需要它看起来像这样:

<container>
<wrapper>
<element />
<element />
</wrapper>
<wrapper>
<element />
<element />
<element />
</wrapper>
<wrapper>
<element />
</wrapper>
</container>

我似乎无法设计实现此目的的模板。那里有人有什么想法吗?

最佳答案

这个转换:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:key name="kFollowing" match="element"
use="generate-id(preceding-sibling::separator[1])"/>

<xsl:template match="/*">
<container>
<xsl:apply-templates select=
"element
[generate-id()
=
generate-id(key('kFollowing',
generate-id(preceding-sibling::separator[1])
)[1]
)
]"/>
</container>
</xsl:template>

<xsl:template match="element">
<wrapper>
<xsl:copy-of select=
"key('kFollowing',
generate-id(preceding-sibling::separator[1])
)"/>
</wrapper>
</xsl:template>
</xsl:stylesheet>

应用于提供的 XML 文档时:

<container>
<element />
<element />
<separator />
<element />
<element />
<element />
<separator />
<element />
</container>

产生想要的、正确的结果:

<container>
<wrapper>
<element/>
<element/>
</wrapper>
<wrapper>
<element/>
<element/>
<element/>
</wrapper>
<wrapper>
<element/>
</wrapper>
</container>

关于xml - 使用 XSLT 将分隔符转换为包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com