XSLT删除XML标记

时间:2018-02-19 13:52:18

标签: xml xslt

我正在使用XML结构,应该对其进行修改以对其执行某些操作。

这是要从以下位置修改的XML结构: -

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <Header>
      <OrgId>20000000</OrgId>
   </Header>
   <Parameters>
      <Parameter>
         <value>I21</value>
         <name>ELEMENT_TYPE</name>
      </Parameter>
   </Parameters>
   <ResponseListener>
      <URI>https://..................../</URI>
      <Method>POST</Method>
   </ResponseListener>
   <System>USER</System>
   <ElementId>Tets001</ElementId>
   <ElementDesc>
      <Id>d2U201</Id>
      <Date>2018-02-20T00:00:00</Date>
      <SequenceNumber>1</SequenceNumber>
      <ElementId>1</ElementId>
      <Action>
         <TransactionName>ABC</TransactionName>
         <ElementSpecification>
            <Name>EQUIPMENT</Name>
            <Version>1.22</Version>
            <Parameters>
               <Parameter>
                  <value>270</value>
                  <name>MATERIAL_ID_1</name>
               </Parameter>
               <Parameter>
                  <value>203</value>
                  <name>QUANTITY_1</name>
               </Parameter>
               <Parameter>
                  <value>ZYXEL</value>
                  <name>MATERIAL_NAME_1</name>
               </Parameter>
               <Parameter>
                  <value>VK40</value>
                  <name>PLANT_ID</name>
               </Parameter>
            </Parameters>
         </ElementSpecification>
      </Action>
   </ElementDesc>
</root>

以下结构: -

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <Header>
      <OrgId>20000000</OrgId>
   </Header>
   <Parameters>
      <Parameter>
         <value>I21</value>
         <name>ELEMENT_TYPE</name>
      </Parameter>
   </Parameters>
   <ResponseListener>
      <URI>https://..................../</URI>
      <Method>POST</Method>
   </ResponseListener>
   <System>USER</System>
   <ElementId>Tets001</ElementId>
   <ElementDesc>
      <Id>d2U201</Id>
      <Date>2018-02-20T00:00:00</Date>
      <SequenceNumber>1</SequenceNumber>
      <ElementId>1</ElementId>
      <Action>
         <TransactionName>ABC</TransactionName>
         <ElementSpecification>
            <Name>EQUIPMENT</Name>
            <Version>1.22</Version>

               <Parameter>
                  <value>270</value>
                  <name>MATERIAL_ID_1</name>
               </Parameter>
               <Parameter>
                  <value>203</value>
                  <name>QUANTITY_1</name>
               </Parameter>
               <Parameter>
                  <value>ZYXEL</value>
                  <name>MATERIAL_NAME_1</name>
               </Parameter>
               <Parameter>
                  <value>VK40</value>
                  <name>PLANT_ID</name>
               </Parameter>

         </ElementSpecification>
      </Action>
   </ElementDesc>
</root>

我应该用哪个xslt来实现这个目标?我尝试过使用xslt以下但是没有达到预期效果。

XSLT如下: -

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:m0="http://services.samples" version="2.0" exclude-result-prefixes="m0 fn"> 
<xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>

<xsl:template match="//ProductSpecification/Parameters">
     <xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:1)

我认为不是

<xsl:template match="//ProductSpecification/Parameters">
     <xsl:value-of select="."/>
</xsl:template>

你想要

<xsl:template match="ProductSpecification/Parameters">
     <xsl:apply-templates/>
</xsl:template>