【发布时间】:2023-03-29 16:56:01
【问题描述】:
我正在使用 XSL 文件来转换一些嵌套的 XML。我想将两层嵌套层次结构展平为两个对象列表,同时通过添加键来保留关系。
我已经设置了 XSL,将每个父级的密钥分配给它的子级,然后只输出子级注释。
源 XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<parent>
<parent-id>1</parent-id>
<child>
<child-id>child_a</child-id>
</child>
</parent>
<parent>
<parent-id>2</parent-id>
<child>
<child-id>child_b</child-id>
</child>
</parent>
</root>
XSL:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="text()" />
<xsl:template match="root">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="root/*">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="child">
<xsl:copy>
<xsl:copy-of select="*"/>
<foreignkey><xsl:value-of select="ancestor::parent/parent-id"/></foreignkey>
</xsl:copy>
</xsl:template>
<xsl:template match="parent">
<xsl:copy>
<xsl:copy-of select="*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这看起来正是我想要的,但我还想像这样添加父母(现在没有嵌套的孩子):
<parent>
<parent-id>1</parent-id>
</parent>
<parent>
<parent-id>2</parent-id>
</parent>
我需要在 XSL 文件中添加什么才能让父母在孩子之前或之后输出?我可以输出一个或另一个,但不能同时输出。
【问题讨论】: