【发布时间】:2013-08-10 09:44:48
【问题描述】:
有没有人举例说明如何在 xslt 本身中引用 xslt 中介的属性?
property - 允许将可选参数传递到转换中。这些属性对应于 XSL 参数,可以在转换过程中访问。
我找不到如何从 xslt 本身中引用它的示例。我已将命名空间 http://ws.apache.org/ns/synapse 添加到 xslt 文档中,但它无法解析 get-property() 函数。
【问题讨论】:
有没有人举例说明如何在 xslt 本身中引用 xslt 中介的属性?
property - 允许将可选参数传递到转换中。这些属性对应于 XSL 参数,可以在转换过程中访问。
我找不到如何从 xslt 本身中引用它的示例。我已将命名空间 http://ws.apache.org/ns/synapse 添加到 xslt 文档中,但它无法解析 get-property() 函数。
【问题讨论】:
假设您的突触配置中有 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>
【讨论】: