如果之前有像我一样的答案,请提前抱歉,但我已经检查过,并且没有找到这个简单问题的答案:
<self-uri xlink:href="http://www.harmreductionjournal.com/content/1/1/5">
我想要做的就是选择属性"xlink:href"
应用以下选择器始终返回空结果:
<xsl:value-of select="@xlink:href"/>
我在处理期间迭代了属性值
xlink:href: http://www.harmreductionjournal.com/content/1/1/5
我的问题非常简单:如何获取具有命名空间的属性的值?我的理解是它应该像这样工作。
如果你能指出我在SO上的正确问题就足够了。
提前致谢。
修改
根据答案,我检查了我的根样式表声明,它看起来像这样:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:mml="http://www.w3.org/1998/Math/MathML"
exclude-result-prefixes="xlink mml">
我猜测exclude属性与问题有关。如果我替换它,我发现它仍然不起作用,结果xml在随机位置上已经满了。
答案 0 :(得分:2)
只要您的XSL文件具有映射到同一名称空间的相同前缀,您的方法就可以正常工作。换句话说,您的XSL文件应该具有命名空间映射
xmlns:xlink="..."
其中...
与源文档中为该命名空间前缀定义的值相同。
答案 1 :(得分:1)
<xsl:template match="self-uri">
<xsl:value-of
select="@xlink:href"
xmlns:xlink="http://www.w3.org/1999/xlink"/>
</xsl:template>
假设输入文档使用http://www.w3.org/TR/xlink11/,应该这样做。当然,您通常只需将xmlns:xlink="http://www.w3.org/1999/xlink"
放在代码的xsl:stylesheet
元素上。