如何获取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中相同的 namespace 前缀。 namespace 前缀仅用作 namespace URI的简写。您可以像这样声明和使用XLINK命名空间:
<xsl:value-of select="DCPType/HTTP/Get/OnlineResource/@x-link:href" xmlns:x-link="http://www.w3.org/1999/xlink"/>