【发布时间】:2017-04-05 14:04:52
【问题描述】:
我有一个源 XML 文件,它具有动态(生成的)命名空间前缀,但该命名空间的 URI 是静态的。我需要通过 URI 获取这个生成的前缀并在我的 XSL 样式表中使用它。
源 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>
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>
所以在我的 XSL 样式表(选择语句)中,我想使用类似 $skosprefix:prefLabel 而不是 j.4:prefLabel 来获取生成的 XML:
<node>TestNode</node>
如何使用 XSLT 1.0 实现它?
【问题讨论】: