Étant donné le code XML suivant:Regroupement et supprimer les éléments dupliqués
<interface name="Serial1/0"/>
<interface name="Serial2/0.0"/>
<interface name="Serial2/0.1"/>
<interface name="Serial3/0:0"/>
<interface name="Serial3/0:1"/>
Je suis en train de produire la sortie suivante:
<interface name="Serial1/0">
<unit name="Serial1/0"/>
</interface>
<interface name="Serial2/0">
<unit name="Serial2/0.0"/>
<unit name="Serial2/0.1"/>
</interface>
<interface name="Serial3/0">
<unit name="Serial3/0:0"/>
<unit name="Serial3/0:1"/>
</interface>
J'ai créé la fonction suivante pour diviser la chaîne:
<xsl:template name="getPhysicalInterfaceName">
<xsl:param name="interfaceName"/>
<xsl:choose>
<xsl:when test="contains($interfaceName, ':')">
<xsl:value-of select="substring-before($interfaceName, ':')"/>
</xsl:when>
<xsl:when test="contains($interfaceName, '.')">
<xsl:value-of select="substring-before($interfaceName, '.')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$interfaceName"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
J'ai trouvé des références à l'utilisation de l'élément xsl: key, mais je n'ai pas trouvé de moyen évident de l'utiliser dans le cadre. Une idée? (J'utilise xsltproc (XSLT1.0) pour effectuer la transformation.)
Ce n'est pas valide XML – Oded
Huh? Quelle partie n'est pas valide XML? – knipknap
Strictement parlant: l'élément de document de niveau supérieur est manquant. ;-) – Tomalak