を削除します。XSL - コピー要素が、私はこのように、属性のみに使用される名前空間を宣言し、いくつかのXMLを持っている未使用の名前空間(S)
<?xml version="1.0" encoding="UTF-8"?>
<a xmlns:x="http://tempuri.com">
<b>
<c x:att="true"/>
<d>hello</d>
</b>
</a>
私はコピーを作成するために、XSLを使用したいです選択されたノードの数とその値 - 属性を取り除く。だから私の所望の出力は次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<b>
<c />
<d>hello</d>
</b>
私はほとんどこれを行い、いくつかのXSLを持っているが、私はそれは、出力のトップレベルの要素に名前空間宣言を入れて停止しているように見えることはできません。私のXSLは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:apply-templates select="https://stackoverflow.com/a/b"/>
</xsl:template>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
出力の最初の要素は<b xmlns:x="http://tempuri.com">
の代わり<b>
です。私はXSLのネームスペースを宣言して、プレフィックスをexclude-result-prefixes
リストに入れようとしましたが、これは何の効果もないようです。私は間違って何をしていますか?
更新:私は、XSLのネームスペースを宣言し、extension-element-prefixes
という属性を使用していることがわかりましたが、これは正しくないようです。私はこれを使うことができると思いますが、なぜexclude-result-prefixes
が動作しないのか知りたいのですが!
更新:実際には、extension-element-prefixes
ソリューションはMSXMLではなくXMLSpyのビルトインXSLTエンジンでのみ動作するようです。
おかげで、(これは(「@ *」テンプレートが必要とされていないようですが)作業を行いますが、私は、「ローカル名を考えました) "機能はかなり遅かった..? –
XSLT 2.0が欲しいです! – Riri
ほぼ完璧ですが、出力にx:att属性がありません。 "@ *"テンプレートは呼び出されません。の直前に、 xsl:for-each>を追加してみてください。 –