对节点进行计数,并在XSLT中不使用任何值进行复制

对节点进行计数,并在XSLT中不使用任何值进行复制,xslt,Xslt,我对XSLT非常生疏,不知道是否有人能给我一些建议 编辑:使用XSLT1.0 原始XML: <gic> <application> <agent> ...child nodes </agent> <client> ...child nodes </client> <bank>

我对XSLT非常生疏,不知道是否有人能给我一些建议

编辑:使用XSLT1.0

原始XML:

<gic>
    <application>
        <agent>
           ...child nodes
        </agent>
        <client>
           ...child nodes
        </client>
        <bank>
          ...child nodes
        </bank>
    </application>
</gic>

…子节点
…子节点
…子节点
我需要将给定的XML输入转换为具有5个客户端节点。输入可以包含填充的1-5个客户端节点。我需要确保输出中始终有5个。在本例中,一个是提供的,因此我需要插入4个客户端节点和所有子节点。所有子节点的值都必须为空。以XML格式输出
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"    
                              xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
  <xsl:apply-templates />
</xsl:template>


<xsl:template match="application" as="node()*">
  <xsl:copy>
    <xsl:apply-templates select="agent" />    
    <!-- copy existing cliens --> 
    <xsl:apply-templates select="client" />    
    <!-- add new clients --> 
    <xsl:call-template name="AddClients">
      <xsl:with-param name="times"  select="10 - count(client)" />
    </xsl:call-template>

    <!-- copy banks --> 
    <xsl:apply-templates select="bank" />            
  </xsl:copy>
</xsl:template>


<xsl:template name="AddClients">
  <xsl:param name="times"  select="1" />
  <xsl:if test="number($times) &gt; 0">    
    <!-- new element here -->
    <xsl:element name="client">
      <xsl:attribute name="a1">
        <xsl:value-of select="asas" />
      </xsl:attribute>
    </xsl:element>

    <xsl:call-template name="AddClients">
      <xsl:with-param name="times"  select="$times - 1" />
    </xsl:call-template>
  </xsl:if>
</xsl:template>

<!-- default -->
<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()" />
  </xsl:copy>
 </xsl:template>

</xsl:stylesheet>

谢谢您的回答@Lesiak。我对我的问题进行了编辑,以简化问题,希望能让问题更清楚一些。谢谢你的时间。