我正在制作一个 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 是一个无效的属性名称。
您需要将命名空间 ( 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>
除了 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>