0

我有一个根节点所在的 XML 文档,sv:node我正在尝试定义一个与该根节点匹配的模板。
当我的根节点没有前缀时,它通常可以工作,但在这种情况下会引发异常。

<xsl:template name="/sv:node" />

我正在将 JAVA 与Apache XALAN XSLT 处理器一起使用,这会引发RuntimeException

Caused by: java.lang.RuntimeException: Le préfixe doit se convertir en espace de noms : /sv
    at org.apache.xml.utils.QName.<init>(QName.java:450)
    at org.apache.xalan.processor.XSLTAttributeDef.processQNAME(XSLTAttributeDef.java:937)

对于 的本地化消息,我深表歉意RuntimeException,基本上它是在抱怨前缀 with 未映射到命名空间。

那么问题来了,怎么匹配这个根节点呢?

编辑:这是我的stylesheet标签这是我的样式表标签:

<xsl:stylesheet version="1.0" 
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:zip="http://apache.org/cocoon/zip-archive/1.0"
            xmlns:sv="http://www.jcp.org/jcr/sv/1.0">
4

2 回答 2

1

我怀疑你的意思是

<xsl:template match="/sv:node" />

(用match而不是name)。Using<xsl:template name="...">声明了一个可以被 调用的命名模板<xsl:call-template>,而不是 的匹配模板<xsl:apply-templates>并且命名模板的名称必须是 QName。异常告诉您它试图将三个字符“正斜杠、s、v”视为 QName 的前缀部分,并发现此前缀未映射到 URI。

于 2013-01-14T17:18:49.487 回答
0

这是一个愚蠢的错误,我正在使用

<xsl:template name="/sv:node" />

代替

<xsl:template match="/sv:node" />
于 2013-01-14T17:20:21.320 回答