2013-12-17 76 views
0

从XML删除所有属性的一个元素我有一个很大的XML文件的下列根元素:XSLT使用XSLT

<Interchange xmlns='http://www.e2b.no/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
xsi:schemaLocation='http://www.e2b.no/XMLSchema Interchange'> 

我需要得到

<Interchange> 

请指教。下面是该模板的最小文件我想(我将不包括我的全部努力,因为他们是更长的时间):

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" indent="yes" /> 
<xsl:template match="@*|node()"> 
<xsl:copy> 
<xsl:apply-templates select="@*|node()"/> 
</xsl:copy> 
</xsl:template> 

<xsl:template match="Interchange/@xmlns|@xmlns:xsi|@xsi:schemaLocation"/> 
</xsl:stylesheet> 
+0

你是什么意思“我不会举例说明我的尝试”?这正是你应该做的。 –

+0

[如何使用XSLT从XML文件中删除不需要的元素和属性]的可能重复(http://stackoverflow.com/questions/5985756/how-to-remove-unwanted-elements-and-attributes-from-xml-file -using-xslt) –

+0

是的,这正是我应该做的 – user3042795

回答

0

空间声明是不一样的属性。这就是为什么你不能按照你的方式从你的身份模板中排除他们。

相反,只要匹配的元素,并输出另一个Interchange是不是“负担”与上面的命名空间:

<xsl:template match="eb:Interchange"> 
    <Interchange> 
    <xsl:apply-templates/> 
    </Interchange> 
</xsl:template> 

确保您定义在XSLT样式表所需的命名空间,以及:

xmlns:eb='http://www.e2b.no/XMLSchema' 

使用哪个前缀(本例中为eb)无关紧要。但是这确保找到了Interchange元素。这是至关重要的,因为<Interchange><Interchange xmlns='http://www.e2b.no/XMLSchema'>不同元素。

+0

谢谢。有用。 – user3042795

+0

你不客气。我希望你现在看到,显示你所尝试过的东西是很重要的 - 即使它不起作用。 –

+0

同意你的意见。 – user3042795