1
私は属性のInkscapeを含むXMLファイルの要素を見つけるためにxmlstarletを使用したいの編集:ラベル=「L2」を、その属性「スタイル」を設定値 "display.inline"に設定します。難しいのは、属性「スタイル」が既に定義されているかどうかではないということです。属性のスタイルがすでに xmlstarlet:それが存在しない場合は、属性を作成し、それ以外
// It works on this
<g inkscape:groupmode="layer"
id="layer2"
inkscape:label="L2"
style="display:none">
を定義されている場合
xmlstarlet edit --inplace --update "//*[@inkscape:label=\"L2\"]/@style" --value "display:inline" ex.svg
それは動作しますが、それはそうでない場合は動作しません:
// Does not work
<g inkscape:groupmode="layer"
id="layer2"
inkscape:label="L2">
Iを
私は現在、このコマンドを使用していますまた、所望の属性を追加することを可能にするコマンドを定義した:
xmlstarlet ed --insert "//*[@inkscape:label=\"L2\"]" --type attr -n style -v "display:inline" ex.svg > output.svg
属性がすでに存在する場合は残念ながら、もう一つは追加されます。
// The element now contains two attributes style
<g inkscape:groupmode="layer"
id="layer2"
inkscape:label="L2"
style="display:none"
style="display:inline">
は、それが存在しない、そうでなければ、それを編集する場合は、属性を作成する方法はありますか?