Как добавить текст тега на одном узле в качестве атрибута другого тега? - PullRequest
1 голос
/ 15 ноября 2011

У меня есть XML-файл со следующими тегами. Это часть одного и того же XML-файла, которые используются несколько раз. Ручная замена будет утомительной работой.

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

Я хочу изменить это на следующий формат -

<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>

Вышеупомянутые теги являются частью файла XML. Файл XML содержит другие различные теги. Заранее спасибо

1 Ответ

2 голосов
/ 15 ноября 2011

Использование:

<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>

Выходной 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...