Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT创建带有计数器的XML标记_Xml_Xslt - Fatal编程技术网

XSLT创建带有计数器的XML标记

XSLT创建带有计数器的XML标记,xml,xslt,Xml,Xslt,谢谢你的回复 <xsl:output indent="yes"/> <xsl:template match="/"> <DataElementsList> <xsl:for-each select="//BC4JDataElementTransferObject"> <xsl:variable name="index" select="count(preceding-sibling::BC4JData

谢谢你的回复

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
对不起,我不清楚这个问题

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
我创建了XSLT,如下所示

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<?xml version="1.0" encoding="UTF-8"?>    
<DataElementsList>
   <DataElement>
      <PUBLICID>2183222</PUBLICID>
      <LONGNAME>Alpha DVG Blood Pressure, Diastolic</LONGNAME>
   </DataElement>
   <DataElement>
     <PUBLICID>7777777</PUBLICID>
     <LONGNAME>Alpha DVG Blood Pressure, Diastolic</LONGNAME>
   </DataElement>
</DataElementsList>
`

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>

`

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
到目前为止,我已经将输出作为XML文件,如下所示

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<?xml version="1.0" encoding="UTF-8"?>    
<DataElementsList>
   <DataElement>
      <PUBLICID>2183222</PUBLICID>
      <LONGNAME>Alpha DVG Blood Pressure, Diastolic</LONGNAME>
   </DataElement>
   <DataElement>
     <PUBLICID>7777777</PUBLICID>
     <LONGNAME>Alpha DVG Blood Pressure, Diastolic</LONGNAME>
   </DataElement>
</DataElementsList>

2183222
α-DVG舒张压
7777777
α-DVG舒张压
我想做一个可重复的标签,使其具有计数器。请参阅下面的示例

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<?xml version="1.0" encoding="UTF-8"?>    
<DataElementsList>
   <DataElement num="1">
      <PUBLICID>2183222</PUBLICID>
      <LONGNAME>Alpha DVG Blood Pressure, Diastolic</LONGNAME>
   </DataElement>
   <DataElement num="2">
     <PUBLICID>7777777</PUBLICID>
     <LONGNAME>Alpha DVG Blood Pressure, Diastolic</LONGNAME>
   </DataElement>
</DataElementsList>

2183222
α-DVG舒张压
7777777
α-DVG舒张压

从我的XSLT中,如何创建“Data Element”标记,当我运行转换时,我的输出XML将在标记中包含计数器?

如果我正确理解这个问题,您只需要向每个包含“index”变量值的“DataElement”节点添加一个“num”属性

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
如果在XSLT中替换此元素:

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<DataElement>

使用此元素:

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<DataElement num="{$index}">


然后,您应该获得示例中提供的输出

如果我正确理解了这个问题,您只需要向包含“index”变量值的每个“DataElement”节点添加一个“num”属性

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
如果在XSLT中替换此元素:

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<DataElement>

使用此元素:

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<DataElement num="{$index}">


然后,您应该获得示例中提供的输出

不知道您的XML是什么样子,我将对此做出一些假设。然而,基本思想仍然有效。也就是说,您所需要做的就是使用
position()
创建索引

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
我意识到这与你目前所做的有点不同,但应该更有效,产生更好的结果

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
因此,如果您使用这个XML

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<root>
  <BC4JDataElementTransferObject/>
  <BC4JDataElementTransferObject/>
  <BC4JDataElementTransferObject/>
  <BC4JDataElementTransferObject/>
  <BC4JDataElementTransferObject/>
</root>

并将此XSL应用于它

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />

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

  <xsl:template match="BC4JDataElementTransferObject">
    <xsl:variable name="index" select="position()" />
    <DataElement num="{$index}">
      Content here
    </DataElement>
  </xsl:template>

</xsl:stylesheet>

满足于此
你得到这个输出

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<DataElementsList>
  <DataElement num="1">
      Content here
    </DataElement>
  <DataElement num="2">
      Content here
    </DataElement>
  <DataElement num="3">
      Content here
    </DataElement>
  <DataElement num="4">
      Content here
    </DataElement>
  <DataElement num="5">
      Content here
    </DataElement>
</DataElementsList>

满足于此
满足于此
满足于此
满足于此
满足于此

不知道您的XML是什么样子,我将对此做出一些假设。然而,基本思想仍然有效。也就是说,您所需要做的就是使用
position()
创建索引

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
我意识到这与你目前所做的有点不同,但应该更有效,产生更好的结果

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
因此,如果您使用这个XML

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<root>
  <BC4JDataElementTransferObject/>
  <BC4JDataElementTransferObject/>
  <BC4JDataElementTransferObject/>
  <BC4JDataElementTransferObject/>
  <BC4JDataElementTransferObject/>
</root>

并将此XSL应用于它

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />

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

  <xsl:template match="BC4JDataElementTransferObject">
    <xsl:variable name="index" select="position()" />
    <DataElement num="{$index}">
      Content here
    </DataElement>
  </xsl:template>

</xsl:stylesheet>

满足于此
你得到这个输出

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<DataElementsList>
  <DataElement num="1">
      Content here
    </DataElement>
  <DataElement num="2">
      Content here
    </DataElement>
  <DataElement num="3">
      Content here
    </DataElement>
  <DataElement num="4">
      Content here
    </DataElement>
  <DataElement num="5">
      Content here
    </DataElement>
</DataElementsList>

满足于此
满足于此
满足于此
满足于此
满足于此

另一个比
position()
更灵活/更有能力的替代方法是
xsl:number
()

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
例如:

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<DataElement>
    <xsl:attribute name="num">
        <xsl:number/>
    </xsl:attribute>
    <!--additional content...-->
</DataElement>

另一个比
position()
更灵活/更有能力的替代方法是
xsl:number
()

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
例如:

<xsl:output indent="yes"/>

<xsl:template match="/"> 
      <DataElementsList>
      <xsl:for-each select="//BC4JDataElementTransferObject">
       <xsl:variable name="index" select="count(preceding-sibling::BC4JDataElementTransferObject)+1" />
         <DataElement>
             <PUBLICID>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/@public-id"/>
          </PUBLICID>
            <LONGNAME>
              <xsl:value-of select="//BC4JDataElementTransferObject[$index]/long-name"/>
          </LONGNAME>  
         </DataElement>  
      </xsl:for-each>                                                                
    </DataElementsList>
 </xsl:template>
<DataElement>
    <xsl:attribute name="num">
        <xsl:number/>
    </xsl:attribute>
    <!--additional content...-->
</DataElement>


………您到底想知道什么…你到底想知道什么?是的,就是这个。非常感谢你。对不起,我的问题不清楚。我很难添加我的代码。@user2654219-您可以只做
num=“{$index}”
,而不是
num=“{position()}”
。这将允许您完全删除
xsl:variable
。是的,就是这样。非常感谢你。对不起,我的问题不清楚。我很难添加我的代码。@user2654219-您可以只做
num=“{$index}”
,而不是
num=“{position()}”
。这将允许您完全删除
xsl:variable
。如果时间允许,请结束此问题,以便其他有类似问题的人可以看到这些解决方案是成功的,谢谢。很高兴它对您有效。如果时间允许,请结束此问题,以便其他有类似问题的人可以看到这些解决方案是成功的,谢谢。