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个循环是可能的,如果存在'Y'值,则两者将与'R'相同。

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

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


但我需要像下面

X : P
    Q
Y : R

最佳答案

听起来像是一个分组问题,您可以使用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

关于java - 如何使用XSL排列数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49553786/

10-09 04:44