จับคู่โหนดรูทเอกสารกับคำนำหน้า

ฉันมีเอกสาร 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 โดยพื้นฐานแล้วเป็นการบ่นเกี่ยวกับคำนำหน้าที่ไม่ได้แมปกับเนมสเปซ

คำถามก็คือ ฉันจะจับคู่รูทโหนดนี้ได้อย่างไร

แก้ไข: นี่คือแท็ก 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">

person zoom    schedule 14.01.2013    source แหล่งที่มา


คำตอบ (2)


ฉันสงสัยว่าคุณหมายถึงจริงๆ

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

(ด้วย match แทนที่จะเป็น name) การใช้ <xsl:template name="..."> จะประกาศ เทมเพลตที่มีชื่อ ซึ่งสามารถเรียกได้โดย <xsl:call-template> ไม่ใช่ เทมเพลตที่ตรงกัน สำหรับ <xsl:apply-templates> และชื่อของเทมเพลตที่มีชื่อจะต้องเป็น QName ข้อยกเว้นจะบอกคุณว่ากำลังพยายามถือว่าอักขระทั้งสามตัว "forward-slash, s, v" เป็นส่วนนำหน้าของ QName และพบว่าคำนำหน้านี้ไม่ได้แมปกับ URI

person Ian Roberts    schedule 14.01.2013

มันเป็นความผิดพลาดที่โง่เขลา ฉันใช้อยู่

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

แทน

<xsl:template match="/sv:node" />
person zoom    schedule 14.01.2013