XSLT 映射以在同一序列中添加缺失的子标签

问题描述 投票:0回答:0

我有下面的输入 xml,其中缺少一些强制性的 xml 标签,例如 需要以相同的顺序在输出中重现

<?xml version="1.0" encoding="UTF-8"?>
<rsp stat="ok" version="1.0">
<result>
<total_results>700</total_results>
<emailClick>
<id>1</id>
<url>https://www.google.com</url>
<email_template_id>12</email_template_id>
<created_at>2023-02-14 00:00:10</created_at>
</emailClick>
<emailClick>
<id>2</id>
<url>https://www.hello.com</url>
<created_at>2023-02-14 00:00:10</created_at>
</emailClick>
</result>
</rsp>

需要以下输出

<emailClick>
<id>1</id>
<url>https://www.google.com</url>
<email_template_id>12</email_template_id>
<created_at>2023-02-14 00:00:10</created_at>
</emailClick>
<emailClick>
<id>2</id>
<url>https://www.hello.com</url>
<email_template_id/>
<created_at>2023-02-14 00:00:10</created_at>
</emailClick>

我正在使用下面的 xslt 来实现这个输出

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes" indent ="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="rsp/result/emailClick">
<emailClick>
<id><xsl:value-of select="id" /></id>
<url><xsl:value-of select="url" /></url>
<email_template_id><xsl:value-of select="email_template_id"/></email_template_id>
<created_at><xsl:value-of select="created_at"/></created_at>
</emailClick>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

有没有更好的方法来实现这一点,任何指导将不胜感激

xslt-1.0 xslt-2.0 xslt-3.0
© www.soinside.com 2019 - 2024. All rights reserved.