xslt – 使用xsl获取名为xlink:href的xml属性

如何在xsl模板中获取xml节点的xlink:href属性的值?

我有这个xml节点:

<DCPType>
 <HTTP>
  <Get>
   <OnlineResource test="hello" xlink:href="http://localhost/wms/default.aspx" 
      xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" />
  </Get>
 </HTTP>
</DCPType>

当我尝试以下xsl时,我收到错误消息“未定义前缀’xlink’.” :

<xsl:value-of select="DCPType/HTTP/Get/OnlineResource/@xlink:href" />

当我尝试这个简单的属性时,它可以工作:

<xsl:value-of select="DCPType/HTTP/Get/OnlineResource/@test" />

解决方法

您需要在XSLT中声明XLINK命名空间,然后才能引用它.

您可以将其添加到xsl:value-of元素:

<xsl:value-of select="DCPType/HTTP/Get/OnlineResource/@xlink:href" xmlns:xlink="http://www.w3.org/1999/xlink" />

但是,如果您需要在样式表的其他区域中引用它,那么在XSLT的document元素的顶部声明它会更容易:

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
    xmlns:xlink="http://www.w3.org/1999/xlink">

顺便说一句,您不需要在样式表中使用与XML中使用的名称空间前缀相同的名称空间前缀.名称空间前缀仅用作名称空间URI的简写.您可以声明并使用XLINK命名空间,如下所示:

<xsl:value-of select="DCPType/HTTP/Get/OnlineResource/@x-link:href"  xmlns:x-link="http://www.w3.org/1999/xlink"/>

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念