2012-04-13 28 views
2

我正在制作一个XSLT 2.0,它接受一个xml并吐出较小的解析xml。其中一个元素需要看起来像这样无法添加xmlns:xlink作为属性。

<article xml:lang="en" article-type="editorial" 
xmlns:xlink="http://www.w3.org/1999/xlink"> 

我创建了xml:lang作为属性,与文章类型相同。但是当我尝试执行xmlns:xlink时,它告诉我xmlns:xlink是属性的无效名称。

回答

2

您需要将名称空间(xmlns:xlink="http://www.w3.org/1999/xlink")添加到您的xsl:stylesheet

例子:

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

另外,如果你想在没有直接键入它把它添加到一个元素,使用xsl:namespace

<article> 
    <xsl:namespace name="xlink" select="'http://www.w3.org/1999/xlink'"/> 
</article> 
0

除了由DevNull正确答案,如果要生成的元素的名称在高级(非动态计算)中是已知的,则可以在代码中使用:

<article xmlns:xlink="http://www.w3.org/1999/xlink"> 
    <!-- Create necessary attributes here --> 
</article> 

这是很可能在这种情况下,简化了属性的创建,如果他们的名字是事先知道,即使它们的值是动态计算:

<article xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="{$vLang}" 
      article-type="{$vartType}" > 
    <!-- Generate any content here --> 
</article>