Как добавить элемент верхнего уровня в XML с помощью XSLT? - PullRequest
3 голосов
/ 22 октября 2010

У меня есть простой XML, к которому я хочу добавить новый корень. Текущий корень - <myFields>, и я хочу добавить <myTable>, чтобы он выглядел так.

<myTable>
    <myFields>
    .
    .
    </myFields>
</myTable>

Ответы [ 4 ]

5 голосов
/ 22 октября 2010

Нечто подобное должно работать для вас ...

<xsl:template match="/">
  <myTable>
    <xsl:apply-templates/>
  </myTable>
</xsl:template>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>
1 голос
/ 22 октября 2010

Эта таблица стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/*">
        <myTable>
            <xsl:call-template name="identity"/>
        </myTable>
    </xsl:template>
    <xsl:template match="@*|node()" name="identity">
        <xsl:copy>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Примечание : скопировать все ( также PI перед корневым элементом ) и добавить myTable befere корневой элемент.

1 голос
/ 22 октября 2010

Это, вероятно, самое короткое решение :):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
        <myTable> 
            <xsl:copy-of select="node()" /> 
        </myTable> 
    </xsl:template> 
</xsl:stylesheet>
0 голосов
/ 22 октября 2010

вы помогли мне подойти достаточно близко

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <xsl:element name="myTable">
            <xsl:copy-of select="*" />
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...