我试图在 httpd.conf 中的相应注释后插入一个 ServerName 指令:
#ServerName www.example.com:80
失败了:
defvar sncomment /files/etc/httpd/conf/httpd.conf/#comment[.= 'ServerName www.example.com:80']
ins directive after $sncomment
defvar snentry /files/etc/httpd/conf/httpd.conf/directive[preceding-sibling::*[1][$sncomment]]
set $snentry 'ServerName'
set $snentry/arg 'www.domain:80'
$sncomment 匹配正确的行,并在树中的正确位置插入一个空白指令,但 $snentry 匹配树中的每个指令,而不仅仅是插入的指令。我如何才能仅匹配插入的指令?
谢谢
答案1
有一种更简单的方法来匹配刚刚插入的指令:
defvar snentry /files/etc/httpd/conf/httpd.conf/directive[. = '']
只要树中没有其他空白指令,此方法就可以正常工作。但是,如果有人能发现我的代码中的错误,我仍然希望能够正确使用前导同级语法。