在路径中间使用字符串函数的XPath

在路径中间使用字符串函数的XPath,xpath,web-deployment,webdeploy,Xpath,Web Deployment,Webdeploy,我正在尝试使用Web Deploy 3.0在部署之前对我的Web.config进行更改。假设我有以下xml: <node> <subnode> <connectInfo httpURL="http://LookImAUrl.com" /> </subnode> <node> 这基本上就是我想做的,但看起来不太对劲 这基本上就是我想做的,但看起来不太对劲 但它是正确的,并且将匹配http (顺便说一句,你

我正在尝试使用Web Deploy 3.0在部署之前对我的Web.config进行更改。假设我有以下xml:

<node>
    <subnode>
        <connectInfo httpURL="http://LookImAUrl.com" />
    </subnode>
<node>
这基本上就是我想做的,但看起来不太对劲

这基本上就是我想做的,但看起来不太对劲

但它是正确的,并且将匹配http

(顺便说一句,你可以把它写得短一点,不必.)

    //node/subnode/connectInfo/@httpURL/substring-before(.,':')
)

但是,它将返回字符串“http”,而不是指向@httpUrl值的某种指针,这是不可能的,因为该值中没有部分节点

(在XPath2中)可以返回属性和新值,然后可能在调用语言中更改它

    //node/subnode/connectInfo/@httpURL/(., concat("https:", substring-after(.,':')))

使用XPath 1.0,如果要返回URL的初始部分,请使用:

substring-before(//node/subnode/connectInfo/@httpURL,':')
但是请注意,这将只返回第一个
connectInfo
元素的值

如果要获取使用HTTP的
connectInfo
节点:

//node/subnode/connectInfo[starts-with(@httpURL,'http:')]
//node/subnode/connectInfo/@httpURL[starts-with(.,'http:')]
如果要获取所有使用HTTP的
httpURL

//node/subnode/connectInfo[starts-with(@httpURL,'http:')]
//node/subnode/connectInfo/@httpURL[starts-with(.,'http:')]

当我尝试加载xml时,XPath表达式中出现了一个
无效标记
错误。它可能不适用于XPath 1.0。我用XPath2.0对它进行了测试,结果表明您的表达式在XPath2.0中很好,但在XPath1.0中没有。