尝试创建一个转换,将带有父/子ids的平面xml映射到层次结构中。我在下面列出了一个简单的请求和答复示例。任何帮助都是非常感谢的!谢谢!
输入xml:
<?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:
<?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将是什么?
发布于 2020-10-25 19:34:31
如果你只有父母和孩子,你可以简单地做:
XSLT1.0
<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>
https://stackoverflow.com/questions/64527285
复制相似问题