xml - XSLT:子节点的不同名称
问题描述
<mensagens>
<mensagem maquina="M02" timestamp="2020-05-22T15:28:50+0000">
<inicioAtividade>
<contexto>
<tipo>OP</tipo>
<descricao>12345</descricao>
</contexto>
</inicioAtividade>
</mensagem>
<mensagem maquina="M03" timestamp="2020-05-22T15:29:46-0400">
<fimAtividade>
<contexto>
<tipo>OP</tipo>
<descricao>12345</descricao>
</contexto>
</fimAtividade>
</mensagem>
<mensagem maquina="M03" timestamp="2020-05-22T15:29:46-0400">
<paragemForcada>
<causa id="fdbs"/>
</paragemForcada>
</mensagem>
<mensagem maquina="M02" timestamp="2020-05-22T18:28:46-0400">
<consumo>
<materiaPrima id="PC3025"/>
<quantidade>200</quantidade>
<origem>
<maquina id="M01"/>
</origem>
</consumo>
</mensagem>
<mensagem maquina="M01" timestamp="2020-05-23T15:28:46-0400">
<producao>
<produto id="PC3025"/>
<quantidade>10</quantidade>
</producao>
</mensagem>
<mensagem maquina="M03" timestamp="2020-06-22T15:28:46-0400">
<entregaProducao>
<quantidade>10</quantidade>
<produto id="RC1.3"/>
<deposito id="DEP1"/>
</entregaProducao>
</mensagem>
<mensagem maquina="M01" timestamp="2020-05-31T15:28:46-0400">
<estorno>
<quantidade>10</quantidade>
<materiaPrima id="RC1.2"/>
<deposito id="DEP1"/>
</estorno>
</mensagem>
</mensagens>
我正在尝试获取“mensagem”的所有子节点的名称。
输出将是: inicioAtividade、fimAtividade、paragemForcada 等。
我已经知道如何获得 mensagem 名字的孩子,但我无法获得每个不同的名字
我的模板从 menagens 开始
我怎么能得到这样的东西?
解决方案
只需使用这个 XSLT 表达式:
<xsl:value-of select="distinct-values(mensagem/*/name())" separator=", " />
它的输出是
inicioAtividade, fimAtividade, paragemForcada, consumo, producao, entregaProducao, estorno
要计算不同名称的每次出现,您可以使用此模板:
<xsl:template match="/mensagens">
<xsl:for-each-group select="mensagem/*" group-by="name()">
<xsl:value-of select="concat(count(current-group()),' - ',current-grouping-key())" />
<xsl:text>
</xsl:text>
</xsl:for-each-group>
</xsl:template>
它的输出是
1 - inicioAtividade
1 - fimAtividade
1 - paragemForcada
1 - consumo
1 - producao
1 - entregaProducao
1 - estorno
推荐阅读
- javascript - AJAX - 无法获取未定义或空引用的“innerHTML”的属性
- c# - 更改“applicationUrl”后,ASP .Net Core MVC 路由在 Visual Studio 2017 中不起作用
- php - 将数据插入数据透视表中,数据透视错误 laravel 5.6
- sql - postgreSQL ORDER BY Text Starts With 10 Instead of 1
- reactjs - Karma test in React app , failing with "TypeError: (0 , _expect2.default)(...).toExist is not a function"
- python - 如何在 python 中的某些子字符串之间选择所有字符串并从结果中创建一个 csv?
- php - codeigniter内部连接错误
- angular - Angular 6 HttpClient 响应只有一些标头
- excel - 根据excel电子表格中的多个条件计算职位是增加还是减少
- python-2.7 - Tkinter (Python): How to treat a modified click as just a click