Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在wso2esb中使用xslt更改消息_Xslt_Xpath_Wso2esb - Fatal编程技术网

如何在wso2esb中使用xslt更改消息

如何在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"

我希望将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"
                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/."/>