2 votes

Utilisation d'une variable comme préfixe dans l'instruction select

J'ai un fichier source XML avec un préfixe d'espace de noms dynamique (généré) mais un URI statique pour cet espace de noms. J'ai besoin d'obtenir ce préfixe généré par URI et de l'utiliser dans ma feuille de style XSL.

Source XML :

<rdf:RDF
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:j.4="http://www.w3.org/2004/02/skos/core#">
    <rdf:Description>
        <j.4:prefLabel>TestNode</j.4:prefLabel>
    </rdf:Description>
</rdf:RDF>

Feuille de style XSL :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
                xmlns:skos="http://www.w3.org/2004/02/skos/core#"
                xmlns:j.4="http://www.w3.org/2004/02/skos/core#"
                exclude-result-prefixes="xsl skos rdf xsd "
                version="1.0">

    <xsl:output method="xml" version="1.0" encoding="UTF-8"
                indent="yes" omit-xml-declaration="yes" />

    <xsl:variable name="skosprefix" select="name(//rdf:RDF/namespace::*[. = 'http://www.w3.org/2004/02/skos/core#'])" />

    <xsl:template match="//rdf:RDF/rdf:Description">
        <node>
            <xsl:value-of select="j.4:prefLabel"/>
        </node>
    </xsl:template>

</xsl:stylesheet>

Dans ma feuille de style XSL (select statement), j'aimerais donc utiliser quelque chose comme $skosprefix:prefLabel au lieu de j.4:prefLabel pour obtenir le fichier XML résultant :

<node>TestNode</node>

Comment puis-je y parvenir en utilisant XSLT 1.0 ?

1voto

Ainar-G Points 20538

Vous pourriez utiliser quelque chose comme

<xsl:value-of select="*[name() = 'j.4:prefLabel'"/>

Si l'espace de noms se trouve dans une variable (ici, nsuri ), vous pouvez utiliser ceci :

<xsl:value-of select="*[namespace-uri() = $nsuri and local-name() = 'prefLabel']"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X