2015-10-10 3 views
1

Как перенести значение элемента дочернего узла на другой дочерний узел с помощью xslt. Мне нужно заменить фиктивный город фактическим значением города с другого дочернего узла.XSLT, чтобы заменить значение элемента дочернего узла значением другого дочернего узла

В приведенном ниже примере мне нужно переместить город из дочернего узла Address в дочерний узел Name.

Источник XML:

<?xml version="1.0" encoding="UTF-8"?> 
<M:Top_Node xmlns:M="urn:com"> 
<M:First_Node> 
    <M:Employee> 
     <M:Name> 
      <M:Employee_ID>001</M:Employee_ID> 
      <M:Name>sam</M:Name> 
      <M:City>Dummy_City_CA</M:City> 
     </M:Name> 
     <M:Address> 
      <M:City>Actual_City_CA</M:City> 
      <M:State>CA</M:State> 
     </M:Address> 
    </M:Employee> 
    <M:Employee> 
     <M:Name> 
      <M:Employee_ID>002</M:Employee_ID> 
      <M:Name>Van</M:Name> 
      <M:City>Dummy_City_NY</M:City> 
     </M:Name> 
     <M:Address> 
      <M:City>Actual_City_NY</M:City> 
      <M:State>NY</M:State> 
     </M:Address> 
    </M:Employee> 
</M:First_Node> 

Ожидаемый результат:

<?xml version="1.0" encoding="UTF-8"?> 
<M:Top_Node xmlns:M="urn:com"> 
<M:First_Node> 
    <M:Employee> 
     <M:Name> 
      <M:Employee_ID>001</M:Employee_ID> 
      <M:Name>sam</M:Name> 
      <M:City>Actual_City_CA</M:City> 
     </M:Name> 
     <M:Address> 
      **<M:City>Actual_City_CA</M:City>** 
      <M:State>CA</M:State> 
     </M:Address> 
    </M:Employee> 
    <M:Employee> 
     <M:Name> 
      <M:Employee_ID>002</M:Employee_ID> 
      <M:Name>Van</M:Name> 
      **<M:City>Actual_City_NY</M:City>** 
     </M:Name> 
     <M:Address> 
      <M:City>Actual_City_NY</M:City> 
      <M:State>NY</M:State> 
     </M:Address> 
    </M:Employee> 
</M:First_Node> 

ответ

1

Написать шаблон для этого элемента

<xsl:template match="M:Employee/M:Name/M:City"> 
    <xsl:copy-of select="../../M:Address/M:City"/> 
</xsl:template> 

плюс шаблон преобразования идентичности, разумеется.

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