如何使用XSL排列数据

时间:2018-03-29 10:29:51

标签: java xml xslt

My XSL-

    <xsl:template match="Identity" mode="Insureds">
    X    : <xsl:value-of select="X"/>
    Y    : <xsl:value-of select="Y"/>
    </xsl:template>

My XML-

    <A identity="1">
      <X>P</X>
      <Y>R</Y>
    </A>
    <A identity="2">
      <X>Q</X>
      <Y>R</Y>
    </A>

这里只有2个循环是可能的,并且&#39; Y&#39;如果存在,它将是相同的&#39; R&#39;在两者中。

嗨,我需要使用xsl打印数据。如果有两个循环,问题在这里 它打印像

X : P
Y : R
X : Q
Y : R

但我需要如下

X : P
    Q
Y : R

1 个答案:

答案 0 :(得分:2)

听起来像你可以在XSLT 2或3中解决的分组问题(Saxon 9在Java中支持)

  <xsl:template match="root">
      <xsl:for-each-group select="A/*" group-by="node-name()">
          <xsl:value-of select="current-grouping-key() || ' : '"/>
          <xsl:for-each-group select="current-group()" group-by=".">
              <xsl:value-of select="."/>
              <xsl:text>&#10;</xsl:text>
          </xsl:for-each-group>
      </xsl:for-each-group>
  </xsl:template>

https://xsltfiddle.liberty-development.net/bFDb2BJ/1