XMLタグ間のスペースと二重引用符を削除します。

XMLタグ間のスペースと二重引用符を削除します。

<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(., '&quot; ', '')"/>        
  </xsl:template>
</xsl:template>

実際の名前空間URIに置き換えますxxxxx(例では表示されません)。

語彙レベルでXMLを処理するには、sedなどの非XML認識ツールを使用しないでください。間違ったXMLを処理する必要がある人がStackOverflowで何百もの問題を抱えていることがわかります。

おすすめ記事