Xml 在select语句中使用变量作为前缀

Xml 在select语句中使用变量作为前缀,xml,xslt,Xml,Xslt,我有一个带有动态(生成的)名称空间前缀的源XML文件,但该名称空间具有静态URI。我需要通过URI获取生成的前缀,并在XSL样式表中使用它 源XML: 测试节点 XSL样式表: 因此,在我的XSL样式表(select语句)中,我想使用类似于$skosprefix:prefLabel的东西,而不是j.4:prefLabel来获得结果XML: TestNode 如何使用XSLT 1.0实现它?您可以使用 <xsl:value-of select="*[name() = 'j.4:

我有一个带有动态(生成的)名称空间前缀的源XML文件,但该名称空间具有静态URI。我需要通过URI获取生成的前缀,并在XSL样式表中使用它

源XML:


测试节点
XSL样式表:


因此,在我的XSL样式表(select语句)中,我想使用类似于$skosprefix:prefLabel的东西,而不是j.4:prefLabel来获得结果XML:

TestNode

如何使用XSLT 1.0实现它?

您可以使用

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

谢谢你的回答,但不幸的是,这并不能解决问题。我不想在select语句中使用'j.4',因为它事先是“未知的”。唯一已知的是该名称空间的URI。太棒了!非常感谢。它按预期工作,但select语句中缺少一个结束括号。在我接受你的回答之前,你能补充一下吗?
<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>
<xsl:value-of select="*[name() = 'j.4:prefLabel'"/>
<xsl:value-of select="*[namespace-uri() = $nsuri and local-name() = 'prefLabel']"/>