2015-11-02 7 views
0

У меня есть входящий XML, как показано ниже: Мне нужно удалить тег <shoeboxImage> из входящего ниже XML.XSLT-код для удаления тега xml

Входящий XML Input:

<attachReceipt> 
    <baseMessage> 
     <returnCode>200</returnCode> 
    </baseMessage> 
    <payload> 
     <returnCode>0</returnCode> 
     <shoeboxItem> 
     <shoeboxImageCount>2</shoeboxImageCount> 
     <shoeboxImages> 
      <shoeboxImage> 
       <name>receiptImage.jpg</name> 
      </shoeboxImage> 
      <shoeboxImage> 
       <name>receiptImage.jpg</name> 
      </shoeboxImage> 
     </shoeboxImages> 
     </shoeboxItem> 
    </payload> 
</attachReceipt> 

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

<attachReceipt> 
    <baseMessage> 
     <returnCode>200</returnCode> 
    </baseMessage> 
    <payload> 
     <returnCode>0</returnCode> 
     <shoeboxItem> 
     <shoeboxImageCount>2</shoeboxImageCount> 
     <shoeboxImages> 
      <name>receiptImage.jpg</name> 
      <name>receiptImage.jpg</name> 
     </shoeboxImages> 
     </shoeboxItem> 
    </payload> 
</attachReceipt> 

Нужна XSLT фрагмент кода, чтобы сделать это.

+0

У меня возникли вопросы. Что вы пробовали? – Kenney

ответ

0

У меня нет необходимого программного обеспечения, установленного на самом деле проверить это, но это должно работать:

<xsl:template match="shoeboxImage"> 
    <xsl:apply-templates select="*|text()"/> 
</xsl:template> 

Идея заключается в том, что, когда shoeboxImage элемент встречается, он не создает ничего для самого элемента, и просто продолжается со своими детьми.

0

Вам необходимо иметь шаблон идентификации и шаблон, который удалит элемент shoeboxImage, но сохранит его потомков.

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

    <xsl:strip-space elements="*"/> 
    <xsl:output indent="yes"/> 

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

    <!-- template override for the element shoeboxImage --> 
    <xsl:template match="shoeboxImage"> 
     <xsl:apply-templates/> 
    </xsl:template> 

</xsl:stylesheet>