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