2014-10-01 2 views
0

у меня есть XML, как это:Преобразование XML с элементами для новых элементов с атрибутами

<?xml version="1.0"?> 
<message> 
    <header> 
    <number>abc</number> 
    <headerType> 
     <code>abc</code> 
    </headerType> 
    </header> 
</message> 

Эта структура, я хотел бы преобразовать в следующую структуру таким образом, что она будет иметь возможность быть связан с моей Telerik RadTreeview управление:

<Tree> 
    <Node Text="message" Value="message"> 
     <Node Text="header" Value="header"> 
      <Node Text="number" Value="number"> 
       <Node Text="abc" Value="abc" /> 
    </Node> 
      <Node Text="headerType" Value="headerType"> 
       <Node Text="code" Value="code"> 
        <Node Text="abc" Value="abc" /> 
       </Node> 
      </Node> 
     </Node> 
    </Node> 
</Tree> 

Возможно ли это преобразование с помощью XSLT, и если да, то какой бы XSLT выглядел?

+1

Ваш вопрос непонятен. Пожалуйста, покажите ожидаемый результат преобразования в данном примере и объясните логику трансформации (если это не самоочевидно), о чем я подозреваю, этого не будет). –

+0

Обратите также внимание, что в XML имя элемента не может начинаться с цифры. –

+0

Извините, потому что не ясна! Я упростил примеры и привел их в соответствие. – Mark

ответ

1

Попробуй так:

<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:strip-space elements="*"/> 

<xsl:template match="/"> 
    <Tree> 
     <xsl:apply-templates select="node()"/> 
    </Tree> 
</xsl:template> 

<xsl:template match="*"> 
    <Node Text="{local-name()}" Value="{local-name()}"> 
     <xsl:apply-templates select="node()"/> 
    </Node> 
</xsl:template> 

<xsl:template match="text()"> 
    <Node Text="{.}" Value="{.}"/> 
</xsl:template> 

</xsl:stylesheet> 

Обратите внимание, что нет Атрибуты в данном примере XML и никаких инструкций о том, как обращаться с ними, если они были найдены.

+0

Кажется, отлично работает, спасибо !!! – Mark

Смежные вопросы