如何在wso2esb中使用xslt更改消息
我希望将xml更改为desire格式。 为此,我使用xslt,我的请求xml如下 要求如何在wso2esb中使用xslt更改消息,xslt,xpath,wso2esb,Xslt,Xpath,Wso2esb,我希望将xml更改为desire格式。 为此,我使用xslt,我的请求xml如下 要求 1. 2. 费萨尔 sps123 年轻 sps123 青年 sp3 我的愿望是这样的 回答 1. 2. 费萨尔 sps123 年轻 sps123 青年 sp3 我为此编写xslt,如下所示 <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
1.
2.
费萨尔
sps123
年轻
sps123
青年
sp3
我的愿望是这样的
回答
1.
2.
费萨尔
sps123
年轻
sps123
青年
sp3
我为此编写xslt,如下所示
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
xmlns:ns="http://ws.wso2.org/dataservice"
exclude-result-prefixes="ns fn">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="//ns:usersCollection"/>
</xsl:template>
<xsl:template match="//ns:usersCollection">
<ns:getResponse xmlns:ns="http://ws.wso2.org/dataservice">
<xsl:for-each select="//ns:usersCollection/ns:users">
<ns:user>
<ns:myname>
<xsl:value-of select="//ns:usersCollection/ns:users/ns:username/."/>
</ns:myname>
<ns:pwd>
<xsl:value-of select="//ns:usersCollection/ns:users/ns:password/."/>
</ns:pwd>
</ns:user>
</xsl:for-each>
</ns:getResponse>
</xsl:template>
</xsl:stylesheet>
但是它没有给出我想要的格式,我想我在选择xpath元素时弄错了,我该如何为此添加单个元素呢
我越来越喜欢这个结果
<ns:getResponse xmlns:ns="http://ws.wso2.org/dataservice">
<ns:user>
<ns:myname>1 faisal youtility yout</ns:myname>
<ns:pwd>2 sps123 sps123 sp3</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>1 faisal youtility yout</ns:myname>
<ns:pwd>2 sps123 sps123 sp3</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>1 faisal youtility yout</ns:myname>
<ns:pwd>2 sps123 sps123 sp3</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>1 faisal youtility yout</ns:myname>
<ns:pwd>2 sps123 sps123 sp3</ns:pwd>
</ns:user>
</ns:getResponse>
1费萨尔青年队
2 sps123 sps123 sp3
1费萨尔青年队
2 sps123 sps123 sp3
1费萨尔青年队
2 sps123 sps123 sp3
1费萨尔青年队
2 sps123 sps123 sp3
提前感谢,我将如何按照我的愿望获得格式使用更多单独的模板来匹配各个元素。在您的情况下,不需要为每个使用
xsl:for
样式表
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="http://ws.wso2.org/dataservice">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/ns:usersCollection">
<ns:getResponse>
<xsl:apply-templates/>
</ns:getResponse>
</xsl:template>
<xsl:template match="ns:users">
<ns:user>
<xsl:apply-templates/>
</ns:user>
</xsl:template>
<xsl:template match="ns:username">
<ns:myname>
<xsl:apply-templates/>
</ns:myname>
</xsl:template>
<xsl:template match="ns:password">
<ns:pwd>
<xsl:apply-templates/>
</ns:pwd>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<ns:getResponse xmlns:ns="http://ws.wso2.org/dataservice">
<ns:user>
<ns:myname>1</ns:myname>
<ns:pwd>2</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>faisal</ns:myname>
<ns:pwd>sps123</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>youtility</ns:myname>
<ns:pwd>sps123</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>yout</ns:myname>
<ns:pwd>sp3</ns:pwd>
</ns:user>
</ns:getResponse>
选择输入XML文档中的所有ns:username
元素,而不仅仅是此时所涉及的一个用户名。我们将使用for each my scenario的时间不适用于这个好问题。请看一看thanx以获得建议。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="http://ws.wso2.org/dataservice">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/ns:usersCollection">
<ns:getResponse>
<xsl:apply-templates/>
</ns:getResponse>
</xsl:template>
<xsl:template match="ns:users">
<ns:user>
<xsl:apply-templates/>
</ns:user>
</xsl:template>
<xsl:template match="ns:username">
<ns:myname>
<xsl:apply-templates/>
</ns:myname>
</xsl:template>
<xsl:template match="ns:password">
<ns:pwd>
<xsl:apply-templates/>
</ns:pwd>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<ns:getResponse xmlns:ns="http://ws.wso2.org/dataservice">
<ns:user>
<ns:myname>1</ns:myname>
<ns:pwd>2</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>faisal</ns:myname>
<ns:pwd>sps123</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>youtility</ns:myname>
<ns:pwd>sps123</ns:pwd>
</ns:user>
<ns:user>
<ns:myname>yout</ns:myname>
<ns:pwd>sp3</ns:pwd>
</ns:user>
</ns:getResponse>
<xsl:value-of select="//ns:usersCollection/ns:users/ns:username/."/>