2015-10-10 167 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> 

当然加上身份转换模板。

相关问题