使用XSLT(Xpath 1.0)的Xpath local-name vs URL

时间:2015-04-20 22:19:10

标签: xml xslt xpath

我正在使用变量从XML文件中读取用户名和密码的值。

    <xsl:variable name="routingDoc" select="document('local:///Config/routing-config.xml')"/>

以下是我正在阅读的XML文件:

    <WSSecurity>
    <destination clientURL="/somethingURL">
        <username>James</username>
        <password>12345</password>
    </destination>
</WSSecurity>

当我使用下面的代码片段时,当我使用URL方法时,Xpath不起作用。

<xsl:variable name="routingDoc" select="document('local:///B2B/routing-config.xml')"/>
<xsl:variable name="username">
    <xsl:value-of select="$routingDoc/my:WSSecurity/my:desination/my:username"/>
</xsl:variable>
<xsl:variable name="password">
    <xsl:value-of select="$routingDoc/my:WSSecurity/my:desination/my:password"/>
</xsl:variable>
    <!--<xsl:variable name="password" select="$WSdoc/WSSecurity/desination/password/text()"/>-->
    <xsl:message dp:priority="debug">   *** Username is: <xsl:value-of select="$username"/>
    </xsl:message>
    <xsl:message dp:priority="debug">   *** Password is: <xsl:value-of select="$password"/>
    </xsl:message>

我将用户名和密码视为空白。但是,当我使用本地名称时,我得到了值?有谁能解释为什么?我认为这是因为我也尝试了这个命名空间

$routingDoc/WSSecurity/desination/username

当我使用它的工作正常时。

$routingDoc/*[local-name()='WSSecurity']/*[local-name()='destination']/*[local-name()='username']

请告知。

0 个答案:

没有答案