Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash和xmlstarlet基于同一标记中的其他属性添加xml属性值_Bash_Xslt_Attributes_Xmlstarlet - Fatal编程技术网

使用bash和xmlstarlet基于同一标记中的其他属性添加xml属性值

使用bash和xmlstarlet基于同一标记中的其他属性添加xml属性值,bash,xslt,attributes,xmlstarlet,Bash,Xslt,Attributes,Xmlstarlet,我有以下xml结构 input.xml <route order="1" xml:base="directory/filename1.xml"> <name>name1</name> </route> <route order="2" xml:base="directory/filename2.xml"> <name>name2</name> </route> 我可以像这样添加一

我有以下xml结构 input.xml

<route order="1" xml:base="directory/filename1.xml">
    <name>name1</name>
</route> 
<route order="2" xml:base="directory/filename2.xml">
    <name>name2</name>
</route> 
我可以像这样添加一个xml:timestamp属性

xmlstarlet ed --insert "/route" --type attr -n xml:timestamp -v 2017-08-31 input.xml

但是如何将date函数的结果传递给-v?

您可以通过将完整的命令放入$()中来引用date命令返回的结果,因此以下操作应该有效:

xmlstarlet ed --insert "/route" --type attr -n xml:timestamp -v "$(date -r directory/filename1.xml +'%Y-%m-%d_%H:%M:%S')" input.xml

您可以通过将complete命令放在$()中来引用date命令返回的结果,因此以下操作应该有效:

xmlstarlet ed --insert "/route" --type attr -n xml:timestamp -v "$(date -r directory/filename1.xml +'%Y-%m-%d_%H:%M:%S')" input.xml

谢谢你的快速回复。但是如何使用$()中的xml:base属性值作为参数呢?可以使用$(sed-En的@^.*order=\“1\”xml:base=\“(.*)”xml:timestamp*$@\1@p'文件名)。相应地更改订单号。感谢Raman的回复。这是可行的,但是如果我有几百个属性为order=“…”的标签呢?是否可以使用xslt转换文件?您可以使用readarray arr将所有条目读取到一个数组中,感谢您的快速响应。但是如何使用$()中的xml:base属性值作为参数呢?可以使用$(sed-En的@^.*order=\“1\”xml:base=\“(.*)”xml:timestamp*$@\1@p'文件名)。相应地更改订单号。感谢Raman的回复。这是可行的,但是如果我有几百个属性为order=“…”的标签呢?是否可以使用xslt转换文件?您可以使用readarray arr将所有条目读取到一个数组中
xmlstarlet ed --insert "/route" --type attr -n xml:timestamp -v "$(date -r directory/filename1.xml +'%Y-%m-%d_%H:%M:%S')" input.xml