附加XML的XSLT转换

时间:2016-07-19 14:22:18

标签: xslt

我有一个XML,如下所示:

<NikuDataBus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:noNamespaceSchemaLocation="../xsd/nikuxog_project.xsd">
<Header action="write" externalSource="NIKU" objectType="project" version="14.3.0.298"/>
<Projects>
    <Project  projectID="0000000284" projectName="Testing">  

        <Tasks>  
              <Task internalTaskID="5095022" name="PS2"  taskID="PS2"> </Task>
              <Task internalTaskID="5095038" name="PS"  taskID="PS"> </Task>
    </Tasks>      

    <Allocations/>
    <scenarioDependencies/>
    <InvestmentAssociations>
    <Allocations/>
    <Hierarchies/>
    </InvestmentAssociations>
    <CustomInformation/>
    <General/>
    <OBSAssocs/>

    </Project>
</Projects>
</NikuDataBus>

我希望使用XSLT转换此XML,最终结果应该只如下所示(只有Tasks标记)。我的XSLT怎么样?

<Tasks>  
<Task internalTaskID="5095022" name="PS2"  taskID="PS2"> </Task>
<Task internalTaskID="5095038" name="PS"  taskID="PS"> </Task>
</Tasks>

1 个答案:

答案 0 :(得分:0)

您可以选择并复制该元素,例如

<xsl:template match="/">
  <xsl:copy-of select="//Tasks" copy-namespaces="no"/>
</xsl:template>

请注意copy-namespaces="no"是XSLT 2.0,没有它,或者在XSLT 1.0中,简单副本将复制xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance",因为它位于根元素的范围内。