使用 xslt 从 xml 获取数据

发布于 2024-11-06 19:54:01 字数 1601 浏览 1 评论 0原文

有一个具有相同标签名称的 xml,但该标签名称值不同,因此我们期望像一对一事务

<swift>
 <message>
 <block3>
    <tag>
       <name>32</name>
       <value>praveen</value>
    </tag>
    <tag>
       <name>42</name>
       <value>pubby</value>
   </tag>
</block3> 
<block4>
    <tag>
       <name>77</name>
       <value>pravz</value>
    </tag>
    <tag>
        <name>77</name>
        <value>pubbypravz</value>
    </tag>
    <tag>
        <name>76</name>
         <value>shanmu</value>
   </tag>
   </block4>
  </message>
</swift>

xslt

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">            
    <xsl:for-each select="swift/message">   

                  <xsl:for-each select ="block3/tag[name = '32']">
            <xsl:value-of select="value"/>
        </xsl:for-each>,<xsl:text/>

                    <xsl:for-each select ="block4/tag[name = '77']">
            <xsl:value-of select="value"/>,<xsl:text/>
        </xsl:for-each>

        </xsl:for-each>

</xsl:template>

这样的输出 通过上面的 xslt,我已经达到了

praveen,pravz,pubbypravz,

所需的输出:

 praveen,pravz

 praveen,pubbypravz

希望我们需要每次设置一个循环,请指导我......

having a xml with same tag names but for that tag names values were different , so we expecting an output like one by one transaction

<swift>
 <message>
 <block3>
    <tag>
       <name>32</name>
       <value>praveen</value>
    </tag>
    <tag>
       <name>42</name>
       <value>pubby</value>
   </tag>
</block3> 
<block4>
    <tag>
       <name>77</name>
       <value>pravz</value>
    </tag>
    <tag>
        <name>77</name>
        <value>pubbypravz</value>
    </tag>
    <tag>
        <name>76</name>
         <value>shanmu</value>
   </tag>
   </block4>
  </message>
</swift>

xslt

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">            
    <xsl:for-each select="swift/message">   

                  <xsl:for-each select ="block3/tag[name = '32']">
            <xsl:value-of select="value"/>
        </xsl:for-each>,<xsl:text/>

                    <xsl:for-each select ="block4/tag[name = '77']">
            <xsl:value-of select="value"/>,<xsl:text/>
        </xsl:for-each>

        </xsl:for-each>

</xsl:template>

by this above xslt i have reached up to this

praveen,pravz,pubbypravz,

output needed:

 praveen,pravz

 praveen,pubbypravz

hope we need to set a loop for each time please guide me ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人生百味 2024-11-13 19:54:01

好吧,你完全改变了你的第一个例子,所以我的第一个答案与你的问题不再匹配。这使得我们的讨论对于局外人来说毫无价值。尽管如此,我还是根据您的新输入数据调整了我的解决方案:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" />

    <xsl:template match="/">
    <xsl:for-each select ="/swift/message/block3/tag[name='32']">
       <xsl:variable name = "first-val" select="value"/>
       <xsl:for-each select ="/swift/message/block4/tag[name='77']">
           <xsl:value-of select="concat($first-val, ',',value)"/>
<xsl:text>
</xsl:text>
       </xsl:for-each>
    </xsl:for-each>

    </xsl:template>
</xsl:stylesheet>

希望这会有所帮助。

Well, you changed your first example completely, so my first answer did not match any more to your question. That makes our discussion some kind of worthless for outsiders. Nevertheless, I adapted my solution to your new input data:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" />

    <xsl:template match="/">
    <xsl:for-each select ="/swift/message/block3/tag[name='32']">
       <xsl:variable name = "first-val" select="value"/>
       <xsl:for-each select ="/swift/message/block4/tag[name='77']">
           <xsl:value-of select="concat($first-val, ',',value)"/>
<xsl:text>
</xsl:text>
       </xsl:for-each>
    </xsl:for-each>

    </xsl:template>
</xsl:stylesheet>

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文