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

问题描述 投票:0回答:1
<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>

只有当LevelName=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>

先谢谢你

xslt insert position conditional-statements element
1个回答
0
投票

这里有一个可能的解决方案。

<?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.net6pS26mN1。

© www.soinside.com 2019 - 2024. All rights reserved.