gpt4 book ai didi

xml - 使用 XSLT 将 XML 转换为 XML - 难看的 ColdFusion 导出

转载 作者:数据小太阳 更新时间:2023-10-29 02:20:14 24 4
gpt4 key购买 nike

我需要转换以下 XML 结构:

<recordset rowCount="68" fieldNames="ITEM,ECL,LEAD_TIME" type="**coldfusion.sql.QueryTable**">
<field name="ITEM">
<string>ITEM_A</string>
<string>ITEM_B</string>
<string>ITEM_C</string>
</field>
<field name="REV">
<string>A</string>
<string>B</string>
<string>C</string>
</field>
<field name="LEAD_TIME">
<string>10</string>
<string>15</string>
<string>25</string>
</field>
</recordset>

进入:

<records>
<item_line>
<item>ITEM_A</item>
<rev>A</rev>
<lead_time>10</lead_time>
</item_line>
<item_line>
<item>ITEM_B</item>
<rev>B</rev>
<lead_time>15</lead_time>
</item_line>
<item_line>
<item>ITEM_C</item>
<rev>C</rev>
<lead_time>25</lead_time>
</item_line>
</records>

我对 XSLT 的了解非常有限......

提前致谢!

最佳答案

<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />

<xsl:template match="/recordset">
<records>
<xsl:apply-templates select="field[@name='ITEM']/string" />
</records>
</xsl:template>

<xsl:template match="field[@name='ITEM']/string">
<xsl:variable name="currpos" select="position()" />

<item_line>
<item>
<xsl:value-of select="." />
</item>
<rev>
<xsl:value-of select="/recordset/field[@name='REV']/string[$currpos]" />
</rev>
<lead_time>
<xsl:value-of select="/recordset/field[@name='LEAD_TIME']/string[$currpos]" />
</lead_time>
</item_line>
</xsl:template>

</xsl:stylesheet>

一个稍微更易读并且可能稍微更快的版本将使用 <xsl:key> :

<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />

<xsl:key name="k_field" match="recordset/field" use="@name" />

<xsl:template match="/">
<records>
<xsl:apply-templates select="key('k_field', 'ITEM')/string" />
</records>
</xsl:template>

<xsl:template match="field[@name='ITEM']/string">
<xsl:variable name="currpos" select="position()" />

<item_line>
<item>
<xsl:value-of select="." />
</item>
<rev>
<xsl:value-of select="key('k_field', 'REV')/string[$currpos]" />
</rev>
<lead_time>
<xsl:value-of select="key('k_field', 'LEAD_TIME')/string[$currpos]" />
</lead_time>
</item_line>
</xsl:template>

</xsl:stylesheet>

关于xml - 使用 XSLT 将 XML 转换为 XML - 难看的 ColdFusion 导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/886316/

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