[英]Adding element in the middle of xml using xslt
輸入 XML 下面:-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Change xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Area>
<Sender>
<LogicalId>tyhu</LogicalId>
</Sender>
<CreationDateTime>2021-04-29T14:33:13Z</CreationDateTime>
<Id1>
<Id>163067354</Id>
</Id1>
</Area>
<Data>
<Prob>
<DateTime>2021-04-29T14:33:13Z</DateTime>
</Prob>
</Data>
</Change>
我需要在 Id1 之后添加兩個元素 Id2 和 Id3。
所需的 Output:-
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Change xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Area>
<Sender>
<LogicalId>tyhu</LogicalId>
</Sender>
<CreationDateTime>2022-04-29T14:33:13Z</CreationDateTime>
<Id1>
<Id>6654</Id>
</Id1>
<Id2>C1</Id2>
<Id3>29</Id3>
</Area>
<Data>
<Prob>
<DateTime>2022-04-29T14:33:13Z</DateTime>
</Prob>
</Data>
</Change>
我在 xslt 下面試過,但沒有運氣:-
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes"/>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="Id1">
<Id2>C1</Id2>
<Id3>29</Id3>
<xsl:next-match/>
</xsl:template>
</xsl:stylesheet>
請讓我知道是否可以通過 xslt 完成。 感謝你的幫助!
只需使用此模板:
<xsl:template match="Id1">
<xsl:next-match />
<Id2>C1</Id2>
<Id3>29</Id3>
</xsl:template>
要使用 XSLT-1.0 完成任務,您必須使用標識模板並將<xsl:next-match />
替換為 < <xsl:copy-of select="." />
<xsl:copy-of select="." />
,但是對於 XSLT-3.0,您可以使用<xsl:mode on-no-match="shallow-copy"/>
,就像您在示例中所做的那樣。
結果是:
<?xml version="1.0" encoding="UTF-8"?>
<Change xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Area>
<Sender>
<LogicalId>tyhu</LogicalId>
</Sender>
<CreationDateTime>2021-04-29T14:33:13Z</CreationDateTime>
<Id1>
<Id>163067354</Id>
</Id1>
<Id2>C1</Id2>
<Id3>29</Id3>
</Area>
<Data>
<Prob>
<DateTime>2021-04-29T14:33:13Z</DateTime>
</Prob>
</Data>
</Change>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.