【发布时间】:2012-08-24 03:23:44
【问题描述】:
我正在尝试使用 JDK Transformer(Oracle XML v2 Parser 或 JAXP)在 XSLT 转换期间通过参数传递的值将 xmlns 属性添加到生成的 XML,但它始终默认为 http://www.w3.org/2000/xmlns/
我的源 XML
<test/>
我的 XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://example.com">
<xsl:param name="myNameSpace" select="'http://neilghosh.com'"/>
<xsl:template match="/">
<process>
<xsl:attribute name="xmlns:neil">
<xsl:value-of select="$myNameSpace"/>
</xsl:attribute>
</process>
</xsl:template>
</xsl:stylesheet>
我的结果
<?xml version="1.0"?>
<process xmlns="http://www.w3.org/2000/xmlns/" xmlns:neil="neilghosh.com">
</process>
我想要的结果
<?xml version="1.0"?>
<process xmlns="http://example.com" xmlns:neil="neilghosh.com">
</process>
【问题讨论】:
-
您应该为命名空间使用有效的 URI,例如
http://example.com/,不是http://example.com。如果您将浏览器输入到位置栏中,浏览器会将后者更正为前者,但这是在纠正输入时的明显错误。不能有没有路径部分的 HTTP URI。
标签: java xml xslt xml-namespaces