XSLT - 根据同一级别的另一个元素的值在某个位置插入元素

XSLT - Insert element at a position based on value of another element at same level

<Level>
    <Name>XYZ</Name>
    <Number>456</Number>
    <DateTime>2020-03-11T08:53:00</DateTime>
 </Level>
<Level>
    <Name>ABC</Name>
    <Number>123</Number>
    <DateTime>2020-03-13T08:53:00</DateTime>
 </Level>
 <Level>
    <Name>PQR</Name>
    <Number>789</Number>
    <DateTime>2020-03-12T08:53:00</DateTime>
 </Level>

仅当Level/Name = ABC

时才在元素下方插入一个新元素Value

所以结果应该是这样的:

 <Level>
    <Name>XYZ</Name>
    <Number>456</Number>
    <DateTime>2020-03-11T08:53:00</DateTime>
 </Level>
<Level>
    <Name>ABC</Name>
    <Number>123</Number>
    <Type>Value</Type>
    <DateTime>2020-03-13T08:53:00</DateTime>
 </Level>
 <Level>
    <Name>PQR</Name>
    <Number>789</Number>
    <DateTime>2020-03-12T08:53:00</DateTime>
 </Level>

提前致谢。

这是一个可能的解决方案。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="Level/Number[../Name='ABC']">
    <xsl:copy-of select="."/>
    <Type>Value</Type>
  </xsl:template>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

看到它在这里工作:https://xsltfiddle.liberty-development.net/6pS26mN/1