XSLT丰富了XML中的文本

XSLT丰富了XML中的文本,xml,xslt,xslt-1.0,xslt-2.0,Xml,Xslt,Xslt 1.0,Xslt 2.0,我有一个XML请求: <soapenv:Body> <compte> <login>Lilian00</login> **<password>?</password>** <name>Lilian</name> </v1:compte> </soapenv:Body> 丽莲00 **?** 丽

我有一个XML请求:

 <soapenv:Body>
      <compte>
         <login>Lilian00</login>
         **<password>?</password>**
         <name>Lilian</name>
      </v1:compte>
 </soapenv:Body>

丽莲00
**?**
丽莲
我想使用XSLT来丰富
字段,以获得以下结果:

 <soapenv:Body>
      <compte>
         <login>Lilian00</login>
         **<password>admin</password>**
         <name>Lilian</name>
      </v1:compte>
 </soapenv:Body> 

丽莲00
**管理员**
丽莲
我试过这个,但不起作用:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    >
    <xsl:param name="password" />


    <xsl:output encoding="UTF-8" indent="yes" />

    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="/soapenv:Body/compte/password">
        <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
        <xsl:value-of select="$password" />
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>


谁能帮帮我,我怎么做

适用于我,只需稍作调整:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    >
    <xsl:output encoding="UTF-8" indent="yes" />

    <xsl:variable name="password" select="'foo'"/>

    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="/soapenv:Body/compte/password">
        <xsl:copy>
            <xsl:apply-templates select="@* | ./*"/>
            <xsl:value-of select="$password" />
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>


Fiddle:

如果您只需从模板匹配中删除第一个斜杠,是否有效?例如,do
Thnx@TimC不,它不工作,XSLT文件正确吗?因为我从未使用过XSLTY,所以您的XML格式不正确:
不匹配。如果
compte
位于命名空间中,则第二个模板将与之不匹配。也没有将前缀绑定到名称空间URI的名称空间声明。我删除了名称空间,但它不起作用,我想我的XSLT有问题。您可以编辑您的问题以显示XML的完整版本吗,该版本包含所有名称空间声明?(即xmlns:soap=“…”和xmlns:v1=“…”)。谢谢