簡體   English   中英

使用 xslt 在 xml 中間添加元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM