2012-04-13 79 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> 
相關問題