我有一堆旧架构版本的消息。我想要消息 从较旧的模式,然后将它们转换为新的模式表单。对此,我真的非常感激 如果有人能帮我这个。
<Audit>
<time>12:35</time>
<number>13354</number>
<previousAudit>
<time>2:54</time>
<number>12667</number>
<previousAudit>
<time>7:05</time>
<number>10659</number>
<previousAudit/>
</previousAudit>
</previousAudit>
</Audit>
My Old Schema
-------------
<MyAuditList>
<Audit>
<time>12:35</time>
<number>13354</number>
</Audit>
<Audit>
<time>1:27</time>
<number>13650</number>
</Audit>
<Audit>
<time>7:05</time>
<number>10659</number>
</Audit>
</MyAuditList>
所以我想以递归方式读取我的旧架构(消息的审核列表并将其嵌入上一个审核表单中),如何 我能在xsl中找到这样的东西吗?非常感谢您的帮助。
答案 0 :(得分:0)
使用:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="MyAuditList">
<Audit>
<xsl:copy-of select="Audit[1]/*"/>
<xsl:apply-templates select="Audit[2]"/>
</Audit>
</xsl:template>
<xsl:template match="Audit">
<previousAudit>
<xsl:copy-of select="*"/>
<xsl:apply-templates select="following-sibling::Audit"/>
</previousAudit>
</xsl:template>
</xsl:stylesheet>
输出:
<Audit>
<time>12:35</time>
<number>13354</number>
<previousAudit>
<time>1:27</time>
<number>13650</number>
<previousAudit>
<time>7:05</time>
<number>10659</number>
</previousAudit>
</previousAudit>
</Audit>
如果您必须输出空previousAudit
,请使用以下内容:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="MyAuditList">
<Audit>
<xsl:copy-of select="Audit[1]/*"/>
<previousAudit>
<xsl:apply-templates select="Audit[2]"/>
</previousAudit>
</Audit>
</xsl:template>
<xsl:template match="Audit">
<xsl:copy-of select="*"/>
<previousAudit>
<xsl:apply-templates select="following-sibling::Audit"/>
</previousAudit>
</xsl:template>
</xsl:stylesheet>
输出:
<Audit>
<time>12:35</time>
<number>13354</number>
<previousAudit>
<time>1:27</time>
<number>13650</number>
<previousAudit>
<time>7:05</time>
<number>10659</number>
<previousAudit />
</previousAudit>
</previousAudit>
</Audit>