2015-11-04 53 views
0

我有一個XSL轉換,具有以下要求: 鏡像完全相同的XML,不包括DocumentList元素。XSL排除不工作

以下是我的代碼。我是從這樣的解決方案: xslt match all nodes except a specific one

我的代碼:

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

<xsl:template match="@*|node()[not(self::DocumentList)]" name="identity"> 
<xsl:copy> 
<xsl:apply-templates select="@*|node()"/> 
</xsl:copy> 
</xsl:template> 

<!-- overwrite the default template --> 
<xsl:template match="DocumentList"> 
</xsl:template> 

</xsl:stylesheet> 

當我跑我的轉型,將顯示所有元素相同的XML。因此,我的quiestion是,我需要在match =「中指定路徑嗎?」什麼是她想要的?

我的源代碼XML確實有其他名稱空間,我在樣式表元素中聲明過,但隱私沒有在這裏轉載。 。

+1

只有pos樣式表代碼不允許我們重現問題,因此您需要顯示最小但完整的XML,XSLT樣本,並輸出您想要的結果,以便我們先重現並解決問題。如果你的真實數據不能被顯示,那就補充一些,但是當涉及到元素名稱和命名空間時,XML和XSLT需要匹配。 –

+1

這個問題很可能是由於你必須在你的樣式表的根目錄下聲明的名稱空間,並用在'match =「[...]」'中。也可以使用'xpath-default-namespace ='[...]''聲明。 – potame

+0

例如http://xsltransform.net/3NJ38YS有一個輸入'DocumentList'元素和最小的XSLT刪除它,並正常工作。 –

回答

0

道歉 - 這是一個namspace問題,我別名我的默認命名空間和它的工作 即 代替的xmlns =「默認命名空間URL」 我用的xmlns:X =「默認命名空間URL」

謝謝, Ahmed