2016-07-14 2 views
0

Я пытался, но не повезло последние несколько дней. У меня есть два повторяющихся элемента (ELM.11) в моем xml. Я хотел бы переименовать другое как (ELM.12). Пожалуйста, ознакомьтесь с нижеприведенным вводом. Заранее спасибо.Как переименовать повторяющиеся элементы xml с XSLT 1.0?

INPUT 
<ROOT> 
    <ELM> 
     <ELM.10>ABC</ELM.10> 
     <ELM.11>001252016175000006</ELM.11> 
     <ELM.11>3796124</ELM.11> 
     <ELM.13> 
      <TS.1>20160623134857-0400</TS.1> 
     </ELM.13> 
     <ELM.14>GLB</ELM.14> 
     <ELM.15>F</ELM.15> 
    <ELM> 
</ROOT> 

EXPECT OUTPUT 
<ROOT> 
    <ELM> 
     <ELM.10>ABC</ELM.10> 
     <ELM.11>001252016175000006</ELM.11> 

     <ELM.12>3796124</ELM.12> 

     <ELM.13> 
      <TS.1>20160623134857-0400</TS.1> 
     </ELM.13> 
     <ELM.14>GLB</ELM.14> 
     <ELM.15>F</ELM.15> 
    <ELM> 
</ROOT> 
+0

Хотя я уверен, что здесь есть люди, которые будут рады помочь вам (может быть, если вы оплатили их), Stack Overflow не является службой записи кода. Вам нужно предоставить то, что вы на самом деле пытались сделать до сих пор (т. Е. [Mcve]) – Tibrogargan

+0

Оказывается, это одна строка кода, которую я ищу. Я бы никогда не рассматривал stackoverflow как службу написания кода. Спасибо за ваш 2-х центов. – user1998820

ответ

0

Вопрос немного неоднозначный. Если я прочитал это в буквальном смысле, ответ очень прост:

XSLT 1,0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

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

<xsl:template match="ELM.11[2]"> 
    <ELM.12> 
     <xsl:apply-templates select="@*|node()"/> 
    </ELM.12> 
</xsl:template> 

</xsl:stylesheet> 
+0

Спасибо, Майкл, он работает. – user1998820

Смежные вопросы