【发布时间】:2022-11-03 16:45:42
【问题描述】:
这是我用于转换为不同格式的示例 XML 文件。我想将 SOLR 标准格式转换为上传 xml 文件。我尝试使用 Xslt 将 xml 文件转换为 solr 格式。但它仅适用于第一部分。我必须转换所有元素。我可以转换为我想要的输出吗?如果有相关文章请分享。
<?xml version="1.0"?>
<article>
<section xml:id="s495f">
<title xml:id="h4cd0"> ID</title>
<para xml:id="p75998"> User_name</para>
</section>
<section xml:id="s495f">
<title xml:id="h4cd0"> ID</title>
<para xml:id="p75998"> User_name</para>
<para xml:id="pfa"> abbccddefg</para>
</section>
<section xml:id="s495f">
<title xml:id="h4cd0"> ID</title>
<para xml:id="p75998"> User_name</para>
<para xml:id="pfa"> Test</para>
</section>
</article>
我尝试使用 XSLT 转换为 Solr Standered 格式。这是我的 XSLT 文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/article">
<add>
<doc>
<xsl:apply-templates select="section"/>
</doc>
</add>
</xsl:template>
<xsl:template match="para">
<field name="para {@xml:id}">
<xsl:value-of select="." />
</field>
</xsl:template>
<xsl:template match="title">
<field name="title {@xml:id}">
<xsl:value-of select="." />
</field>
</xsl:template>
</xsl:stylesheet>
我的输出是这样的:仅适用于单个“节”元素,我尝试为每个“节”元素进行转换
我的输出:
<?xml version="1.0" encoding="UTF-8"?>
<add>
<add>
<doc>
<field name ="title h4cd0"> ID</field>
<field name = "para p75998"> User_name</field>
<field name = "para pfa"> xyxzzc</field>
<field name = "para p90f4b1"> location: details</field>
<field name = "para p43cecf4"> Job profile</field>
<field name = "para p75d4cc799"> refrence Id</field>
<field name = "para p628c34"> True</field>
</doc>
</add>
我想要的输出:
<add>
<doc>
<field name ="title h4cd0"> ID</field>
<field name = "para p75998"> User_name</field>
</doc>
<doc>
<field name ="title h4cd0"> ID</field>
<field name = "para p75998"> User_name</field>
<field name = "para pfa"> abbccddefg</field>
</doc>
<doc>
<field name ="title h4cd0"> ID</field>
<field name = "para p75998"> User_name</field>
<field name = "para pfa"> Test</field>
<field name = "para p90f4b1"> location: details</field>
<field name = "para p43cecf4"> Job profile</field>
<field name = "para p75d4cc799"> refrence Id</field>
<field name = "para p628c34"> True</field>
</doc>
</add>
【问题讨论】:
标签: xml xslt solr solrj solrcloud