0

ルートノードであるXMLドキュメントがあり、sv:nodeこのルートノードに一致するテンプレートを定義しようとしています。
ルートノードにプレフィックスがない場合、通常は機能しますが、この場合は例外がスローされます。

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

ApacheXALANXSLTプロセッサでJAVAを使用しています。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。基本的に、プレフィックスが名前空間にマップされていないことについて不平を言っています。

したがって、問題は、このルートノードをどのように一致させることができるかということです。

編集:これが私の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)。を使用すると、に一致するテンプレートではなく、によって呼び出すことができる名前付きテンプレート<xsl:template name="...">が宣言されます。名前付きテンプレートの名前はQNameである必要があります。例外は、3つの文字「スラッシュ、s、v」をQNameのプレフィックス部分として処理しようとしていることと、このプレフィックスがURIにマップされていないことを検出することです。<xsl:call-template><xsl:apply-templates>

于 2013-01-14T17:18:49.487 に答える
0

それはばかげた間違いでした、私は使っていました

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

それ以外の

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