2014-01-03 3 views
1

Это мой фильтр:Почему XSLT не может удалить <sMessage> узел

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" > 
<xsl:template match="Table1/*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node() | @*"/> 
    </xsl:copy> 
</xsl:template> 
<xsl:template match="Table1"> 
    <xsl:copy> 
     <xsl:apply-templates select="node() | @*"/> 
    </xsl:copy> 
</xsl:template> 
<xsl:template match="xs:schema"> 
</xsl:template > 
<xsl:template match="sMessage"> 
</xsl:template > 
</xsl:stylesheet> 

Это мой XML:

<GetWorkOrderListResponse xmlns="http://buildfolio.com/TamesWebSvs/"> 
    <GetWorkOrderListResult> 
     <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> 
      <NewDataSet xmlns=""> 
       <Table1 diffgr:id="Table11" msdata:rowOrder="0" diffgr:hasChanges="inserted"> 
       <WR_ID>862</WR_ID> 
       <WR_NO>RP-WO302</WR_NO> 
       </Table1> 
       <Table1 diffgr:id="Table12" msdata:rowOrder="1" diffgr:hasChanges="inserted"> 
       <WR_ID>722</WR_ID> 
       <WR_NO>TT12012-WO263</WR_NO> 
       </Table1> 
      </NewDataSet> 
     </diffgr:diffgram> 
    </GetWorkOrderListResult> 
    <sMessage>Download Success!</sMessage> 
    </GetWorkOrderListResponse> 

Я не в состоянии удалить узел sMessage из вывода. Мой вывод содержит текст Download Success !, от которого я пытаюсь избавиться. Что мне не хватает? Спасибо.

ответ

1

Что вы теряете, что ваш XML документ имеет пространство имен по умолчанию:

xmlns="http://buildfolio.com/TamesWebSvs/" 

По контекстному наследованию, элемент sMessage находится в этом пространстве имен. Чтобы соответствовать этому, вы должны указать совпадение для поиска sMessage в этом пространстве имен:

<xsl:template match="tws:sMessage" xmlns:tws="http://buildfolio.com/TamesWebSvs/"> 
Смежные вопросы