Преобразовать значение атрибута в элемент - PullRequest
3 голосов
/ 19 января 2011

Я пытаюсь преобразовать этот xml:

<tokens>
 <token cle="a">
  <token cle="b">nomX</token>
  <token cle="c">prenomX</token>
  <token cle="d">villeX</token>
 </token>
 <token cle="a">
  <token cle="b">nomY</token>
  <token cle="c">prenomY</token>
  <token cle="d">villeY</token>
 </token>
 <token cle="e">nomZ</token>
</tokens>

в этот xml:

<tokens>
 <a>
  <b>nomX</b>
  <c>prenomX</c>
  <d>villeX</d>
 </a>
 <a>
  <b>nomY</b>
  <c>prenomY</c>
  <d>villeY</d>
 </a>
 <e>nomZ</e>
</tokens>

, поэтому преобразуйте значение атрибута в элемент, но мне нужно сохранить целоеструктура и deph.

Я пробовал использовать XSL, но пока не удалось.Если у кого-то есть идея, она будет очень признательна.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 19 января 2011

так что xslt - правильный путь, я думаю:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8"
        indent="yes" />
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()" />
        </xsl:copy>
    </xsl:template>
    <xsl:template match="token">
        <xsl:element name="{@cle}">
            <xsl:apply-templates />
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>
0 голосов
/ 19 января 2011

Я использовал ваш ответ, чтобы найти правильный xsl:

вот что я использую:

<xsl:template match="token">
        <xsl:element name="{@cle}">
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>

Спасибо большое!

0 голосов
/ 19 января 2011

Это должно сработать:

<xsl:template match="token">
  <xsl:element name="{@cle}">
    <xsl:apply-templates select="*|@*"/>
  </xsl:element>
</xsl:template>

для получения дополнительной информации о xsl: element см .: http://www.w3.org/TR/xslt#section-Creating-Elements-with-xsl:element

вы можете захотеть добавить xsl: if, чтобы проверить, действительно ли существует атрибут @cle, но в противном случае все должно работать нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...