gpt4 book ai didi

XSLT 合并/合并节点

转载 作者:行者123 更新时间:2023-12-05 01:04:56 28 4
gpt4 key购买 nike

首先抱歉,也许这个问题已经提出,但我找不到任何可以帮助我的东西,可能是因为我对 XSLT 缺乏了解。

我有以下 XML:

<xml> 
<EstadoRespuesta>
<Error>0</Error>
<Estatus>OK</Estatus>
</EstadoRespuesta>
<NewDataSet>
<Table1>
<Elemento>Cuenta</Elemento>
<Valor>XZY07633</Valor>
</Table1>
<Table1>
<Elemento>Fecha del Balance</Elemento>
<Valor>2016-Nov-18 19:15</Valor>
</Table1>
<Table1>
<Elemento>Balance</Elemento>
<Valor>60.7</Valor>
</Table1>
<Table1>
<Elemento>Lectura</Elemento>
<Valor>2,152.4</Valor>
</Table1>
<Table1>
<Elemento>Suspensión al llegar a</Elemento>
<Valor>2,213.1</Valor>
</Table1>
<Table1>
<Elemento>Fecha aproximada de corte*</Elemento>
<Valor>2017-Jan-04 15:37</Valor>
</Table1>
</NewDataSet>
</xml>

我想这样转换:

<xml>
<EstadoRespuesta>
<Error>0</Error>
<Estatus>OK</Estatus>
</EstadoRespuesta>
<NewDataSet>
<Table1>
<Cuenta>XZY07633</Cuenta>
</Table1>
<Table1>
<FechadelBalance>2016-Nov-18 19:15</FechadelBalance>
</Table1>
<Table1>
<Balance>60.7</Balance>
</Table1>
<Table1>
<Lectura>2,152.4</Lectura>
</Table1>
<Table1>
<Suspensiónalllegara>2,213.1</Suspensiónalllegara>
</Table1>
<Table1>
<Fechaaproximadadecorte>2017-Jan-04 15:37</Fechaaproximadadecorte>
</Table1>
</NewDataSet>
</xml>

我用过这个:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/*">
<records>
<xsl:apply-templates/>
</records>
</xsl:template>

<xsl:template match="NewDataSet">
<record>
<xsl:apply-templates/>
</record>
</xsl:template>

<xsl:template match="Table1">
<record>
<xsl:apply-templates/>
</record>
</xsl:template>

<xsl:template match="Elemento">
<xsl:attribute name="local-name(.)">
<xsl:value-of select="Valor"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>

但我并没有关闭得到我需要的东西。有人可以给我一些建议/帮助吗?提前致谢。

最佳答案

这样试试:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:variable name="valid-chars">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-.</xsl:variable>

<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="Table1">
<xsl:copy>
<xsl:element name="{translate(Elemento, translate(Elemento, $valid-chars, ''), '')}">
<xsl:value-of select="Valor"/>
</xsl:element>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

注意:

  1. 您需要将要保留的字符(例如 ó)添加到有效字符列表中。

  2. 即使在过滤了无效字符之后,输入的内容仍然可能是无效的 XML 元素名称(例如,如果它以数字开头)。

关于XSLT 合并/合并节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40699079/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com