【问题标题】:WSO2/Synapse: using properties with the XSLT mediatorWSO2/Synapse:将属性与 XSLT 中介一起使用
【发布时间】:2013-08-10 09:44:48
【问题描述】:

有没有人举例说明如何在 xslt 本身中引用 xslt 中介的属性?

documentation

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

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

【问题讨论】:

    标签: xslt wso2 wso2esb


    【解决方案1】:

    假设您的突触配置中有 2 个属性。然后您想将它们传递给 XSLT 并从那里引用它。所以在突触配置中,

    <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>
    

    现在,这里的 XSLT 是您引用它们的方式。首先将它们定义为两个参数。

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

    在您需要的地方将它们用作 $email、$name。

    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>
    

    【讨论】:

    • 这行得通;我很惊讶 WSO2 的文档中没有这样的例子。谢谢!
    • 只有字符串值可以作为参数传递。任何人都可以帮助将 OMElement 作为属性传递?
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多