首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用xslt从平面xml到层次xml

使用xslt从平面xml到层次xml
EN

Stack Overflow用户
提问于 2020-10-25 18:27:35
回答 1查看 122关注 0票数 0

尝试创建一个转换,将带有父/子ids的平面xml映射到层次结构中。我在下面列出了一个简单的请求和答复示例。任何帮助都是非常感谢的!谢谢!

输入xml:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<Rowset>
    <Row>
        <id>5</id>
        <header>grouptile1</header>
        <parentid>NULL</parentid>
    </Row>
    <Row>
        <id>1</id>
        <header>Grp1 HeaderTile 1-1</header>
        <subheader>Grp1 HeaderTile 1-1</subheader>
        <parentid>5</parentid>
    </Row>
    <Row>
        <id>2</id>
        <header>Grp1 HeaderTile 2-1</header>
        <subheader>Grp1 HeaderTile 2-1</subheader>
        <parentid>5</parentid>
    </Row>
    <Row>
        <id>6</id>
        <header>grouptile2</header>
        <parentid>NULL</parentid>
    </Row>
    <Row>
        <id>3</id>
        <header>Grp1 HeaderTile 2-1</header>
        <subheader>Grp1 HeaderTile 2-1</subheader>
        <parentid>6</parentid>
    </Row>
    <Row>
        <id>4</id>
        <header>Grp1 HeaderTile 2-2</header>
        <subheader>Grp1 HeaderTile 2-2</subheader>
        <parentid>6</parentid>
    </Row>
</Rowset>

转换为输出xml:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<tiles>
  <grouptile>
    <id>5</id>
    <header>grouptile1</header>
    <tile>
        <id>1</id>
        <header>Grp1 HeaderTile 1-1</header>
        <subheader>Grp1 HeaderTile 1-1</subheader>
    </tile>
    <tile>
        <id>2</id>
        <header>Grp1 HeaderTile 2-1</header>
        <subheader>Grp1 HeaderTile 2-1</subheader>
    </tile>
  </grouptile>
  <grouptile>
    <id>6</id>
    <header>grouptile2</header>
    <tile>
        <id>3</id>
        <header>Grp1 HeaderTile 2-1</header>
        <subheader>Grp1 HeaderTile 2-1</subheader>
    </tile>
    <tile>
        <id>4</id>
        <header>Grp1 HeaderTile 2-2</header>
        <subheader>Grp1 HeaderTile 2-2</subheader>
    </tile>
  </grouptile>
</tiles>

xslt将是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-25 19:34:31

如果你只有父母和孩子,你可以简单地做:

XSLT1.0

代码语言:javascript
运行
复制
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:key name="children" match="Row" use="parentid"/>

<xsl:template match="/Rowset">
    <tiles>
        <xsl:for-each select="Row[parentid='NULL']">
            <grouptile>
                <xsl:copy-of select="id | header"/>
                <xsl:for-each select="key('children', id)">
                    <tile>
                        <xsl:copy-of select="id | header | subheader"/>
                    </tile>             
                </xsl:for-each>
            </grouptile>
        </xsl:for-each>
    </tiles>
</xsl:template>

</xsl:stylesheet>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64527285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档