<?xml version="1.0" encoding="UTF-8"?>
<!-- '<xsl:stylesheet>' and '<xsl:transform>' are completely synonymous: -->
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <!-- La cible est du XML : -->
    <xsl:output method="xml" indent="yes"/>
    <!-- The 'match' attribute is used to associate a template with an XML element, say '/' as the root: -->
    <xsl:template match="/PLM">
        <PLM>
            <xsl:apply-templates select="Article"/>
            <xsl:text disable-output-escaping="yes">&lt;!-- ... --&gt;</xsl:text> 
            <xsl:apply-templates select="Lien_de_nomenclature"/>
            <xsl:text disable-output-escaping="yes">&lt;!-- ... --&gt;</xsl:text> 
        </PLM>
    </xsl:template>
    <xsl:template match="Article">
        <xsl:element name="{local-name()}">
            <!-- Ajout d'un attribut à l'élément : -->
            <xsl:attribute name="reference">
                <xsl:value-of select="@reference" />
            </xsl:attribute>
            <!--First sub-element:-->
            <!--<designation>-->
            <!--<xsl:value-of select="@designation"/>-->
            <!--</designation>-->
            <!-- Itération sur tous (i.e., '*') les attributs (i.e., '@') : -->
            <xsl:for-each select="@*">
                <!-- Pas terrible... on exclut le 1er attribut, e.g., 'reference' : -->
                <!-- Revoir ce test car les attributs sont par définition non ordonnés : -->
                <xsl:if test="position() != 1">
                    <xsl:element name="{local-name(.)}">
                        <xsl:choose>
                            <xsl:when test="local-name(.) = 'PF_ou_MP_ou_Piece_ou_SE'">
                                <xsl:element name="{.}">
                                </xsl:element>
                            </xsl:when>
                            <xsl:otherwise>
                                <xsl:value-of select="." />
                            </xsl:otherwise>
                        </xsl:choose> 
                    </xsl:element>   
                </xsl:if>
            </xsl:for-each>
        </xsl:element>
    </xsl:template>
    <xsl:template match="Lien_de_nomenclature">
        <xsl:element name="{local-name()}">
            <xsl:for-each select="@*">
                <xsl:element name="{local-name(.)}">
                    <xsl:value-of select="." />
                </xsl:element>
            </xsl:for-each>
        </xsl:element>
    </xsl:template>
</xsl:transform>
