Di XSLT ada
<xsl:value-of select="expression"/>
untuk mendapatkan nilai sebuah elemen, tetapi adakah sesuatu untuk memilih nama-tag dari elemen tersebut?
Dalam situasi seperti ini:
<person>
<!-- required stuff -->
<name>Robert</name>
<!-- optional stuff, free form for future extension.
Using XMLSchema's xsd:any -->
<profession>programmer</profession>
<hobby>photography</hobby>
</person>
<xsl:for-each select="person">
<xsl:tag-of select="."/> : <xsl:value-of select="."/>
</xsl:for-each>
Untuk mendapatkan keluaran seperti ini:
name : Robert profession : programmer hobby : photography
Tentu saja XSLT di atas tidak dapat dikompilasi karena
<xsl:tag-of select="expression"/>
tidak ada. Tapi bagaimana ini bisa dilakukan?
Jawaban:
Ini akan memberi Anda nama elemen saat ini (nama tag)
OP-Edit: Ini juga akan melakukan trik:
sumber
Tidak ada yang menunjukkan perbedaan halus dalam semantik dari fungsi
name()
danlocal-name()
.name(someNode)
mengembalikan nama lengkap node, dan itu termasuk awalan dan titik dua jika node adalah elemen atau atribut.local-name(someNode)
mengembalikan hanya nama lokal dari node, dan itu tidak termasuk awalan dan titik dua jika node adalah elemen atau atribut.Oleh karena itu, dalam situasi di mana sebuah nama mungkin dimiliki oleh dua ruang nama yang berbeda,
name()
fungsi tersebut harus digunakan agar nama-nama ini tetap dapat dibedakan.Dan, BTW, dimungkinkan untuk menentukan kedua fungsi tanpa argumen apa pun :
name()
adalah singkatan dariname(.)
local-name()
adalah singkatan darilocal-name(.)
Terakhir , ingatlah bahwa tidak hanya elemen dan atribut yang memiliki nama, kedua fungsi ini juga dapat digunakan pada PI dan keduanya identik).
sumber
sumber
Bagi yang berminat, tidak ada:
Namun Anda dapat membuat ulang tag / elemen dengan membuka:
Ini berguna dalam template xslt yang misalnya menangani pemformatan nilai data untuk banyak elemen berbeda. Jika Anda tidak mengetahui nama elemen yang sedang dikerjakan dan Anda masih dapat menampilkan elemen yang sama, dan mengubah nilainya jika perlu.
sumber
sumber