私はXSLTの初心者です。私は長い間XMLを変換しようとしてきましたが、できませんでした。 入力XMLは、このようなものです:その値がversion 2
ある場合xslt 1.0を使用してxmlの属性値の文字列を置き換えます。
<Load v:MajorVersion="05" v:MinorVersion="01" xmlns="version 2" xmlns:v="version 2">
<annotation/>
<Header></Header>
<Body></Body>
</Load>
出力はversion 1
にversion 2
から属性xmlns
の値とxmlns:v
を置き換える必要があり、そうでなければそのままにする必要があります。
問題は、属性が変更される傾向があり、入力xmlがxmlns:n
またはxmlns:m
のようなものであるか、これらの属性が存在しない可能性があります。
最後に、我々は、ノードLoad
のすべての属性を検索し、すべての属性で文字列を検索version 2
(のxmlnsのように、のxmlns:V、のxmlns:nは、等)する必要があり をしてversion 1
によって置き換えます。
私を助けてください。私を信頼してください。私は時間を費やして答えを見つけました。
私は上記の解決策を見ました。問題は、名前空間の修飾子が動的であること、v2、pidx、その他のものである可能性があることです。また、値が "version 2"である複数の名前空間宣言が存在する可能性があります。目的は "バージョン2"から "バージョン1"へのすべての名前空間宣言を置き換えることです –
あなたは同じ名前空間uriの名前空間接頭辞について話しています。彼らは問題ではありません。 xsltにはxmlと同じである必要がないユニークなプレフィックスだけが必要です。上記のテンプレートを試してみてください。 –