[解決済み] exclude-result-prefixesが機能しない
質問
出力のルート要素に @xmlns:* 属性を含めない xslt 変換を書こうとしています。次の xml があるとします。
<?xml version="1.0" encoding="UTF-8"?>
<jw:root xmlns:jw="http://lexisnexis.com/neptune/gtdttest/jw">
<jw:a/>
<b test="1">
<c/>
</b>
</jw:root>
そしてこのスタイルシートは
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0"
xmlns:jw="http://namespace/test/jw" exclude-result-prefixes="jw">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@test"/>
</xsl:stylesheet>
こんなのが出てきました。
<?xml version="1.0" encoding="UTF-8"?>
<jw:root xmlns:jw="http://lexisnexis.com/neptune/gtdttest/jw">
<jw:a/>
<b>
<c/>
</b>
</jw:root>
試しに - ルートテンプレートに@exclude-result-prefixesを記述する。 - 属性をコピーしない - IDテンプレートで'コピー'を使わず - を使用して、#all
今見つからないのですが、仕様書によると
<xsl:copy/>
は @exclude-result-prefixes を無視し、他のものは同様にそれを上書きすることができます。
これらの @xmlns:[prefix] atts を削除する方法はありますか?nsは出力が使用するdtdで定義されているので、そこにあるのは困りものです。このような場合、javaで開くだけの別のパスを作成し、その方法で削除する必要があると思います?
ありがとうございます。
解決方法は?
exclude-result-prefixes属性は、(a)リテラルな結果要素に対してのみ機能し、(b)以下のような名前空間のみを排除します。 未使用 - 要素や属性の名前に使用されている名前空間は、常に結果ツリーで宣言されます。
あなたが実現しようとしているのは、入力要素を異なる名前空間になるように修正することです。これは、常に要素名(名前空間+ローカル名)を維持するxsl:copyではできません。を使用して新しい要素を作成する必要があります。
<xsl:element name="{local-name()}">
.
結果の要素や属性に正しい名前をつければ、名前空間の宣言は勝手に行われます。要素や属性の名前は (namespace, localname) のペアであることを忘れないようにしましょう。
関連
-
[解決済み] Powershell - XMLをCSVに変換する
-
[解決済み] cvc-complex-type.2.4.a: 要素 'ProcessDesc' で始まる無効なコンテンツが見つかりました。ProcessNameのいずれかが期待されます。
-
[解決済み] xslt での配列の作成
-
[解決済み] SOAPセキュリティヘッダとSOAPヘッダの違いについて
-
末尾のセクションにコンテンツを入れることはできません。
-
[解決済み】XMLにおける「standalone」ディレクティブの意味とは?
-
[解決済み】XML スキーマ(XSD)検証ツール?[クローズド]
-
[解決済み】googleプロトコルバッファ vs json vs XML【終了しました
-
[解決済み】XPath:子ノードから親ノードを取得する
-
[解決済み】XML属性とXML要素
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XSLTでif-else文を実装する方法とは?
-
[解決済み] XMLエラーです。ドキュメントの末尾に余分なコンテンツがあります
-
[解決済み] EclipseでXMLコードをフォーマットする
-
[解決済み] SOAPセキュリティヘッダとSOAPヘッダの違いについて
-
[解決済み] 概念 XML XLST 先行-兄弟-祖先
-
末尾のセクションにコンテンツを入れることはできません。
-
[解決済み】XMLにおける「standalone」ディレクティブの意味とは?
-
[解決済み】XML スキーマ(XSD)検証ツール?[クローズド]
-
[解決済み】XMLで"&"をエスケープするにはどうしたらいいですか?重複
-
[解決済み】シェルからXPathワンライナーを実行する方法は?