3

有没有人有一个例子说明如何在 xslt 本身内引用 xslt 调解器上的属性?

文件说_

property - 允许将可选参数传递到转换中。这些属性对应于 XSL 参数并且可以在转换期间访问。

我找不到如何从 xslt 本身中引用它的示例。我已将命名空间http://ws.apache.org/ns/synapse添加到 xslt 文档,但它无法解析 get-property() 函数。

4

1 回答 1

9

Say you have 2 properties in your synapse config. Then you want to pass them to XSLT and refer it from there. So inside the synapse config,

<property name="email" expression="//request/email"/>
<property name="name" expression="//request/name"/>

<xslt key="orderTransformer">
             <property name="email" expression="get-property('email')"/>
             <property name="name" expression="get-property('name')"/>
</xslt>

Now insdie the XSLT here is how you refer them. First Define them as two params.

<xsl:param name="email"/>
<xsl:param name="name"/>

Use them as $email, $name in where u need.

Example XSLT

<xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:ns1="http://wso2.org/sample/shop/order">
    <xsl:output method="xml" omit-xml-declaration="yes"/>
    <xsl:param name="email"/>
    <xsl:param name="name"/>
    <xsl:template match="/">
        <xsl:apply-templates select="//ns1:AddOrder"/>
    </xsl:template>
    <xsl:template match="ns1:AddOrder">
        <ns1:AddOrder>
            <ns1:email>
                <xsl:value-of select="$email"/>
            </ns1:email>
            <ns1:name>
                <xsl:value-of select="$name"/>
            </ns1:name>
        </ns1:AddOrder>
    </xsl:template>
</xsl:stylesheet>
于 2013-08-10T01:44:48.387 回答