2

我正在制作一个 XSLT 2.0,它接受一个 xml 并吐出更小的解析 xml。其中一个元素需要看起来像这样

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

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

4

2 回答 2

3

您需要将命名空间 ( 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>
于 2012-04-13T18:29:40.093 回答
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>
于 2012-04-14T01:27:50.007 回答