<ns:tag2>
LinuxのXMLファイルにあるXMLタグの値からスペースと引用符を削除したいです(このタグに対してのみスペースを削除し、他の場所では削除しません)。
XMLコンテンツの例は次のとおりです。
<ns:tag1>
<ns:tag2>Abcdef qwert/denn+hkg kmknn xyz""""""""""</ns:tag2>
</ns:tag1>
しかし、以下のようにファイルに書き込む必要があります。
<ns:tag1>
<ns:tag2>Abcdefqwert/denn+hkgkmknnxyz</ns:tag2>
</ns:tag1>
私は次の解決策を見ました。XMLファイルからスペースと引用符を含む文字列を削除するsedコマンドを使用して引用符を削除しようとしましたが、成功しませんでした。
sed 's/ ""//g' temp.xml
正しい構文を提案してください。これを2つの異なるステップで行うことができれば良いでしょう。
ベストアンサー1
これがタスクを実行するXSLT 3.0変換です。
<xsl:transform version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="ns:tag2/text()" xmlns:ns="xxxxx">
<xsl:value-of select="translate(., '" ', '')"/>
</xsl:template>
</xsl:template>
実際の名前空間URIに置き換えますxxxxx
(例では表示されません)。
語彙レベルでXMLを処理するには、sedなどの非XML認識ツールを使用しないでください。間違ったXMLを処理する必要がある人がStackOverflowで何百もの問題を抱えていることがわかります。