0

如果之前有像我这样的答案,请提前抱歉,但我已经检查并没有找到这个简单问题的确切答案:

<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 在随机位置充满了它。

4

2 回答 2

2

只要您的 XSL 文件具有映射到相同名称空间的相同前缀,您的方法就应该有效。换句话说,您的 XSL 文件应该具有命名空间映射

xmlns:xlink="..."

where...与源文档中为该名称空间前缀定义的值相同。

于 2013-07-08T10:07:53.147 回答
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元素上。

于 2013-07-08T10:24:57.643 回答