Xml 如何在一个节点上添加标记文本作为另一个标记的属性。。?

Xml 如何在一个节点上添加标记文本作为另一个标记的属性。。?,xml,xslt,xpath,Xml,Xslt,Xpath,我有一个XML文件,它有以下标记。这些是同一个XML文件的一部分,它们被多次使用。手动更换将是一项令人厌烦的工作 <Ids> <Id><No>1</No></Id> <Id><No>2</No></Id> <Id><No>3</No></Id> <Id><No>4</No></Id> &

我有一个XML文件,它有以下标记。这些是同一个XML文件的一部分,它们被多次使用。手动更换将是一项令人厌烦的工作

<Ids>
 <Id><No>1</No></Id>
 <Id><No>2</No></Id>
 <Id><No>3</No></Id>
 <Id><No>4</No></Id>
</Ids>

1.
2.
3.
4.
我想将此更改为以下格式-

<Ids>
 <Id n="1"><No>1</No></Id>
 <Id n="2"><No>2</No></Id>
 <Id n="3"><No>3</No></Id>
 <Id n="4"><No>4</No></Id>
</Ids>

1.
2.
3.
4.
上述标记是XML文件的一部分。XML文件包含另一个不同的标记。提前感谢

使用:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

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

  <xsl:template match="Id">
    <xsl:copy>
      <xsl:attribute name="n">
        <xsl:value-of select="No"/>
      </xsl:attribute>

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

</xsl:stylesheet>

输入XML:

<Ids>
  <Id>
    <No>1</No>
  </Id>
  <Id>
    <No>2</No>
  </Id>
  <Id>
    <No>3</No>
  </Id>
  <Id>
    <No>4</No>
  </Id>
</Ids>

1.
2.
3.
4.
输出XML:

<Ids>
  <Id n="1">
    <No>1</No>
  </Id>
  <Id n="2">
    <No>2</No>
  </Id>
  <Id n="3">
    <No>3</No>
  </Id>
  <Id n="4">
    <No>4</No>
  </Id>
</Ids>

1.
2.
3.
4.

该死。你赢了我8分钟P