2011-12-17 8 views
0

名前空間の属性が異なるXMLがあります。これは基本的に拡張XHTMLの一種です。私はすべての非xhtml名前空間の属性をダンプします。XSLT 2.0のテンプレートマッチング - 必要な名前空間にないすべての属性を取り除く

ExamplaryソースXML:

<html> 
    <body> 
    <p class="test" xy:foo="true">blah</p> 
    </body> 
</html> 

瞬間、私は次のXSLTテンプレートがあります。

<xsl:template match="@*"> 
    <xsl:choose> 
     <xsl:when test='namespace-uri()="http://www.w3.org/1999/xhtml"'><xsl:copy-of select="."/></xsl:when> 
     <xsl:otherwise></xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

所望の出力XML:

<html> 
    <body> 
    <p class="test">blah</p> 
    </body> 
</html> 

をしかし、それはいないようです私は出力XMLを属性なしで完全に取得するため、一致させる必要があります。 namespace-uri()が期待どおりに動作しないという感覚があります。何か案は?

答えて

1

XHTML要素の属性(classなど)は、XHTML名前空間ではなく、名前空間のない属性です。したがって、

<xsl:template match="@*[namespace-uri() != '']"/> 

にID変換テンプレートを加えたものを使用してください。

+0

ありがとう、それは私がそれについて考えると簡単だった – Alp

関連する問題