【问题标题】:XML-XSLT-XPATH : How to convert multiple XML elements to a string, separated by semicolonXML-XSLT-XPATH : 如何将多个 XML 元素转换为字符串,用分号分隔
【发布时间】:2015-06-23 05:29:20
【问题描述】:

我刚刚将我的问题演示为如下输入和输出格式。 我有一个作为 xml 文档的输入,其中包含以下数据

    <Users>
          <user>
             <name>Mark Curtain</name>
             <email>mark@gmail.com</email>
             <username>mark</username>
          </user>
          <user>
             <name>Zuke Gossip</name>
             <email>zuke@abc.com</email>
             <username>zuke</username>
          </user>
          <user>
            <name>Villan Kiosk</name>
            <email>kv@gmail.com</email>
            <username>kvk</username>
         </user>
  </Users>

我想在一个字符串中获取用户名和名称,应该用分号(;)分隔。

例如:用户名: "mark;zuke;kvk"

类似的名字还有名字:“Mark Curtain;Zuke Gossip;Villan Kiosk”

是否有任何 Xpath 函数可以实现相同的功能? XSL 转换中是否有任何方法可以将以上字符串作为输出?

【问题讨论】:

  • 显示你尝试了什么?
  • 哦,是的,这可以使用 XSL 转换。您只需要迭代每个 Users/user/username 以获取第一个字符串,并在 name 上迭代以获取第二个字符串(在除最后一个元素之外的每个元素之后连接 ;)。
  • 是的,你是正确的@LingamurthyCS。但如果是通过 XPath 或 XSLT 或 XPath 的其他功能完成将不胜感激。
  • @TechnoCracker 你介意发布你的实现吗?
  • 在 xslt 2.0 中,您可以在 xsl:value-of 上使用 @separator 属性,然后实现只需一行。

标签: xml xslt xpath xslt-2.0


【解决方案1】:

你可以使用类似的东西:

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

    <xsl:output method="text"/>

    <xsl:template match="/">
        <xsl:text>UserNames: &quot;</xsl:text>
        <xsl:value-of select="/Users/user/username" separator=";"/>
        <xsl:text>&quot;&#xA;</xsl:text>
        <xsl:text>Names: &quot;</xsl:text>
        <xsl:value-of select="/Users/user/name" separator=";"/>
        <xsl:text>&quot;</xsl:text>
    </xsl:template>

</xsl:stylesheet>

【讨论】:

  • 谢谢@Joel M. Lamsen,而不是更好地迭代每个元素以直接使用 xpath 进行选择。属性“分隔符”我不知道,因为我是 Xpath 和 XSLT 的新手。谢谢大家对我的问题感兴趣。
猜你喜欢
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多