Xslt 当name是属性值模板时,xsl:element使用哪个名称空间
我试图理解xsl:element如何正常工作,我有以下测试转换:Xslt 当name是属性值模板时,xsl:element使用哪个名称空间,xslt,xslt-1.0,Xslt,Xslt 1.0,我试图理解xsl:element如何正常工作,我有以下测试转换: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:template match="test">
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:template match="test">
<output>
<test1/>
<xsl:element name="test2"/>
<xsl:variable name="three" select="3"/>
<xsl:element name="test{$three}"/>
</output>
</xsl:template>
</xsl:stylesheet>
适用于本文件时:
<?xml version="1.0" encoding="UTF-8"?>
<test/>
我使用xsltproc得到这个结果
<?xml version="1.0"?>
<output xmlns="http://www.w3.org/1999/xhtml">
<test1/>
<test2/>
<test3 xmlns=""/>
</output>
为什么test3节点与test1和test2不在同一名称空间中?使用Visual Studio并使其应用XSLT我得到了以下内容(为可读性而格式化),因此我认为这是xsltproc中的一个错误
<?xml version="1.0" encoding="utf-8"?>
<output xmlns="http://www.w3.org/1999/xhtml">
<test1 />
<test2 />
<test3 />
</output>
我无法重现您的结果;xsltproc(根据libxml20703、libxslt 10124和libexslt 813编译)为我提供了与其他名称空间相同的test3。您使用的是哪个版本的xsltproc?使用libxml 20900、libxslt 10127和libexslt 816,xsltproc是针对libxml 20900编译的,libxslt 10127和libexslt 816 libxslt 10127是针对libxml 20900编译的,libexslt 816是针对libxml 20900编译的,所以这可能是一个bug?