Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用XSL从XML中删除属性并从XML中删除根元素_Xml_Xslt - Fatal编程技术网

如何使用XSL从XML中删除属性并从XML中删除根元素

如何使用XSL从XML中删除属性并从XML中删除根元素,xml,xslt,Xml,Xslt,我想从XML中删除属性和根元素 输入XML: <OrderList> <Order> <Extn ExtnTest="" ExtnVoid="" /> </Order> </OrderList> 所需的XML是 <Order> <Extn ExtnTest="" /> </Order> 所以我想删除根元素(OrderList)和属性(ExtnVoi

我想从XML中删除属性和根元素

输入XML:

<OrderList>
    <Order>
        <Extn ExtnTest="" ExtnVoid="" />
    </Order>
</OrderList>

所需的XML是

<Order>
    <Extn ExtnTest=""  />
</Order>

所以我想删除根元素(OrderList)和属性(ExtnVoid)

我正在使用下面的XSL,但它不起作用,请帮助

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/OrderList/@ExtnVoid" />
    <xsl:template match="/">
        <xsl:copy-of select="/OrderList/*"/>
    </xsl:template>
</xsl:stylesheet>

从标识转换开始,您可以通过将模板仅应用于子元素,然后使用不需要的属性来移除包装器:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:template match="/OrderList">
      <xsl:apply-templates select="*"/>
   </xsl:template>

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

   <xsl:template match="@ExtnVoid" />
</xsl:stylesheet>