如何使用 xslt 获取具有数据的标签名称

how to get tags name that have data with xslt

我有 XML 有效负载,看起来像

<payload>
<field1>data1</field1> 
<field2>data2</field2>
<field3>data3</field3>
<field4></field4>
</payload>

我希望函数获取包含数据的标签名称并将其转换为以下结果

result : field1,field2,field3

有办法实现吗?

您可以在 XSLT-1.0 样式表中使用这两个模板:

<xsl:template match="/">
  result: <xsl:apply-templates select="payload/*[normalize-space(.)]" />
</xsl:template>

<xsl:template match="*">
  <xsl:value-of select='name()' />
  <xsl:if test="position()!=last()"><xsl:text>,</xsl:text></xsl:if>
</xsl:template>

它的输出是:

result: field1,field2,field3

<xsl:value-of select="/payload/*[normalize-space()]" separator=", "/> 应在 XSLT 2 或 3 中执行。