gpt4 book ai didi

通过 XSL/XSLT 将 XML 转换为 XML?

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

我正在非常努力地尝试获取由专有数据库吐出的 XML 文档,并将其转换为格式良好的 XML 文档,最终将由 Apache Solr 编制索引。

我想获取此 XML 文件并将其转换为如下所示的 Apache Solr 格式。

<?xml version="1.0" encoding="UTF-8" ?>
<ecatalogue>
<tuple>
<table name="CatObjectName_tab">
<tuple>
<atom name="CatObjectName">Clog</atom>
</tuple>
</table>
<atom name="CatObjectNumber">2003-39-27A</atom>
<atom name="CatObjectTitle"></atom>
<table name="CatOtherNumbers_tab">
<tuple>
<atom name="CatOtherNumbers">1895.1.117a</atom>
</tuple>
</table>
<table name="ProPlaceName_tab">
<tuple>
<atom name="ProPlaceName">China</atom>
</tuple>
</table>
<table name="CatOtherNumberType_tab">
<tuple>
<atom name="CatOtherNumberType">Other Number</atom>
</tuple>
</table>
<atom name="DatDateMade"></atom>
<atom name="DatEarliestDateMadeOrig"></atom>
<atom name="DatLatestDateMadeOrig"></atom>
</tuple>

<tuple>
<table name="CatObjectName_tab">
<tuple>
<atom name="CatObjectName">Boot</atom>
</tuple>
</table>
<atom name="CatObjectNumber">2003-39-20B</atom>
<atom name="CatObjectTitle"></atom>
<table name="CatOtherNumbers_tab">
<tuple>
<atom name="CatOtherNumbers">1895.1.91b</atom>
</tuple>
</table>
<table name="ProPlaceName_tab">
<tuple>
<atom name="ProPlaceName">China</atom>
</tuple>
</table>
<table name="CatOtherNumberType_tab">
<tuple>
<atom name="CatOtherNumberType">Other Number</atom>
</tuple>
</table>
<atom name="DatDateMade"></atom>
<atom name="DatEarliestDateMadeOrig"></atom>
<atom name="DatLatestDateMadeOrig"></atom>
</tuple>
</ecatalogue>

我想把上面的改成这样:

<add>
<doc>

<field name="ProPlaceName">China</field>
<field name="CatObjectTitle"></field>
<field name="CatObjectNumber">2003-39-27A</field>
<field name="CatOtherNumberType">Other Number</field>
<field name="CatOtherNumbers">1895.1.117a</field>
<field name="CatObjectName_tab">Clog</field>
<field name="DatDateMade"></field>
<field name="DatEarliestDateMadeOrig"></field>
<field name="DatLatestDateMadeOrig"></field>
</doc>
<!-- Row 2 -->
<doc>
<field name="ProPlaceName">China</field>
<field name="CatObjectTitle"></field>
<field name="CatObjectNumber">2003-39-20B</field>
<field name="CatOtherNumberType">Other Number</field>
<field name="CatOtherNumbers">1895.1.91b</field>
<field name="CatObjectName_tab">Boot</field>
<field name="DatDateMade"></field>
<field name="DatEarliestDateMadeOrig"></field>
<field name="DatLatestDateMadeOrig"></field>
</doc>
</add>

最好是尝试使用 XSL/XSLT 还是使用 java 或其他编程语言来进行转换?你会如何解决这个问题,你能指出正确的方向吗?

我相信它可以使用 XSL 来完成。感谢您的帮助。

最佳答案

这应该对您有所帮助。它相当简单,并假设您正在跳过任何嵌套表......而不是只捕获其中的原子。它不会按任何特定顺序对字段进行排序。

<xsl:template match="/">
<add>
<xsl:for-each select="ecatalogue/tuple">
<doc>
<xsl:for-each select=".//atom">
<field name="{@name}"><xsl:value-of select="."/></field>
</xsl:for-each>
</doc>
</xsl:for-each>
</add>
</xsl:template>

关于通过 XSL/XSLT 将 XML 转换为 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7082988/

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