จับคู่อย่างง่ายกับพารามิเตอร์โดยใช้ XSLT 2.0

นี่คือรหัส xsl ของฉันที่ไม่มีพารามิเตอร์

<xsl:template match="node-name">
 ....
</xsl:template>

ตอนนี้ฉันต้องการใช้พารามิเตอร์แทน node-name ดังนั้นฉันจึงเพิ่ม:

<xsl:param name="someParam"/>
 ...

<xsl:template match="$someParam">
 ....
</xsl:template>

อย่างไรก็ตาม มันไม่ทำงาน ใน SO ฉันพบคำถามเดียวเกี่ยวกับพารามิเตอร์ในการจับคู่ (xsl: วิธีใช้พารามิเตอร์ inside match?) แต่มันมีกรณีที่ซับซ้อนกว่านี้ ฉันก็เลยต้องการ ใครสามารถช่วยฉันได้บ้าง?


person Shtirlits    schedule 11.11.2020    source แหล่งที่มา


คำตอบ (2)


ใช้ match="*[local-name()=$node-name]"

ดูแลเนมสเปซ

โปรดทราบว่าไม่อนุญาตให้ใช้สิ่งนี้ใน XSLT 1.0 เฉพาะใน 2.0+ เท่านั้น

person Michael Kay    schedule 11.11.2020

หากนั่นคือพารามิเตอร์ร่วม หากคุณใช้โปรเซสเซอร์ XSLT 3 เช่น Saxon 9.8 หรือใหม่กว่า หรือ Altova 2017 R3 หรือใหม่กว่า คุณสามารถลองใช้พารามิเตอร์คงที่ <xsl:param name="node-name" static="yes" select="'foo'"/> และแอตทริบิวต์เงา <xsl:template _match="{$node-name}">

person Martin Honnen    schedule 11.11.2020