如何使用标记将值提取到xslt中的任何内置函数

时间:2014-12-30 05:01:10

标签: xml xslt

<xsl:template name="SampleState">
            <Param xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns="http://www.sample.con/ca/sse/sample-v3_0_0"
                xsi:schemaLocation="http://www.sample.con/ca/sse/sample-v3_0_0">
                <name>
                    <xsl:value-of
        select="concat('sample-',normalize-space(/*/*/*[local-name()='state']/message/id))" />
                </name>
                <value>
                    <xsl:value-of
                        select="normalize-space(/*/*/*[local-name()='state']/message/value)" />
                </value>
            </Param>
        </xsl:template>
        <xsl:template match="/">
            <xsl:variable name="request">
                <xsl:call-template name="SampleState"></xsl:call-template>
            </xsl:variable>
            <xsl:value-of select="mdfn:md5Hex($request)"/>
        </xsl:template>

名称和值的值取自soap request.I想要将带有值的整个标记传递给任何函数。当我尝试使用xsl:value-of with output-escaping =“yes”时,它只给出值但是我需要所有标签。

1 个答案:

答案 0 :(得分:0)

下面是一个简短的例子来复制所有元素,但不是de&#34; p&#34;,这就变成了&#34; para&#34;:

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

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