Убрать тег, но сохранить его содержимое - PullRequest
0 голосов
/ 03 сентября 2018

Как мне удалить тег name (если существует), сохранив все его содержимое с помощью XSLT 1.0?

Input.xml:

<authors>
    <author>
        Author 1
    </author>
    <author>
        <sup>*</sup>Author 2
    </author>
    <author>
        <name>Author 3</name><sup>1</sup>
    </author>
    <author>
        <sup>**</sup><name>Author 4</name><sup>2</sup>
    </author>
</authors>

desired_output.xml:

<authors>
    <author>
        Author 1
    </author>
    <author>
        <sup>*</sup>Author 2
    </author>
    <author>
        Author 3<sup>1</sup>
    </author>
    <author>
        <sup>**</sup>Author 4<sup>2</sup>
    </author>
</authors>

1 Ответ

0 голосов
/ 03 сентября 2018

Использовать только для пропуска только имени элемента:

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

Ниже завершено XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="1.0">

    <xsl:output indent="yes"/>

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


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

</xsl:stylesheet>
...