gpt4 book ai didi

xslt - 循环 XSLT

转载 作者:行者123 更新时间:2023-12-05 01:24:13 27 4
gpt4 key购买 nike

我有一些看起来像这样的 XML

<Data>

<MainItem>
<ItemGroup>Foo</ItemGroup>
<ItemDetails>Details</ItemDetails>
</MainItem>

<MainItem>
<ItemGroup>Bar</ItemGroup>
<ItemDetails>Details</ItemDetails>
</MainItem>

<MainItem>
<ItemGroup>Baz</ItemGroup>
<ItemDetails>Details</ItemDetails>
</MainItem>

<OtherData>
<ItemGroup>Foo</ItemGroup>
<OtherDataDetails>Blah</OtherDataDetails>
</OtherData>

<OtherData>
<ItemGroup>Bar</ItemGroup>
<OtherDataDetails>BlahBlah</OtherDataDetails>
</OtherData>

<OtherData>
<ItemGroup>Baz</ItemGroup>
<OtherDataDetails>BlahBlahBlahBlahBlah</OtherDataDetails>
</OtherData>

</Data>

我要转换的是类似这样的东西:

Foo
- Details
- Blah

Bar
- Details
- BlahBlah

Baz
- Details
- BlahBlahBlahBlahBlah

使用 XSLT 1.0。

我目前正在通过执行类似于 Muenchian method 的操作来完成分组;但我不确定如何将标签中的数据引入我的分组。有什么建议吗?

最佳答案

尝试这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />

<xsl:key name="groups" match="//ItemGroup" use="text()" />

<xsl:template match="/">
<Data>
<xsl:apply-templates
select="//ItemGroup[count( . | key('groups', text())[1]) = 1]" />
</Data>
</xsl:template>

<xsl:template match="ItemGroup">
<xsl:variable name="text" select="text()" />
<Group><xsl:value-of select="$text" /></Group>
<xsl:for-each select="/Data/*[ItemGroup = $text]/*[contains(name(), 'Details')]">
<Detail>- <xsl:value-of select="." /></Detail>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

我设置了一个 working example给你。

关于xslt - 循环 XSLT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192812/

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