2017-02-05 33 views
0

下面的刪除多餘的聲明是輸入:XLST模板從CreateInterfaceRequest標籤

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body> 
    <CreateInterfaceRequest Destination="KISTA" CreatedBy="ONETM"> 
     <Source_ObjectID>TEST24</Source_ObjectID> 
    </CreateInterfaceRequest> 
    </s:Body> 
</s:Envelope> 

而且我所要的輸出是

<CreateInterfaceRequest> /* this needs to be as it is 
    <Source_ObjectID>TEST24</Source_ObjectID> 
</CreateInterfaceRequest> 

與SOAP附件。刪除我用這個XSLT模板匹配代碼(目標= 「KISTA」 CreatedBy = 「ONETM」)

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

,但它給人的錯誤

模板匹配不能在BODY

聲明
+0

能否請您編輯您的問題,以顯示你已經使用了XSLT模板匹配?謝謝! –

+1

@ShilpaSegu:請[編輯](http://stackoverflow.com/posts/42051249/edit)這個問題,而不是添加評論。 – mzjn

+0

完成..讓我知道你是否想要我添加任何內容 –

回答

0

此模板是實現此目的的一種可能性。它只是刪除Source_ObjectID節點的名稱空間,並複製所有CreateInterfaceRequest節點(並刪除其所有屬性)。

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

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

    <xsl:template match="Source_ObjectID"> 
    <xsl:element name="Source_ObjectID" namespace=""> 
     <xsl:copy-of select="node()|@*" /> 
    </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 

輸出:

<?xml version="1.0"?> 
<CreateInterfaceRequest> 
    <Source_ObjectID>TEST24</Source_ObjectID> 
</CreateInterfaceRequest> 
+0

我得到的錯誤爲:xsl:template'不能是'xsl:template'元素的子元素。這個標籤應放在哪裏。 –

+0

@ShilpaSegu:你的問題一定是錯誤的,因爲在我的回答中沒有''作爲另一個''的子元素,你可以很容易地驗證它。 – zx485