gpt4 book ai didi

java - xsl 到 xml 转换添加不存在的字段?

转载 作者:行者123 更新时间:2023-12-01 11:20:52 25 4
gpt4 key购买 nike

我有数千个 xsl 文件,我需要转换它们以便在 Solr 中对它们进行索引。我已经这样做了,但我需要每个文件都有一个与文件名相同的字段 ID。这些文件如下所示:

<TEXT>&#2;
<TITLE>A Title</TITLE>
<DATELINE> A Dateline </DATELINE>
<BODY> text </BODY>
</TEXT>

例如:我的文件名称类似于“0001.xsl”、“0002.xsl”等。我需要有类似的东西:

<?xml version="1.0" encoding="UTF-8"?>
<add>
<doc>
<field name="ID">0001</field>
<field name="TITLE">-a tile-</field>
<field name="DATELINE">-a dateline-</field>
<field name="BODY"> -text-</field>
</field>
</doc>
</add>

这是样式表:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- use this for debugging only -->
<!-- <xsl:output method="xml" indent="yes"/> -->

<xsl:template match="*">
<xsl:element name="field">
<xsl:attribute name="name">
<xsl:value-of select="name()"/>
</xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>

<xsl:template match="/">
<add>
<doc>
<xsl:apply-templates select="//TEXT/*"/>
</doc>
</add>
</xsl:template>

</xsl:stylesheet>

我到底该怎么做?我是否需要更改样式表,或者我可以在读取文件名后使用 Java 添加特定字段吗?我正在使用 Java 来转换文件并为其建立索引。

最佳答案

当您使用 Java 时,您可以切换到 Saxon 和 XSLT 2.0,其中您可以使用函数来读出文档 URI 并进行标记化以将其拆分以提取文件名。或者使用 XSLT 1.0 处理器,假设您使用知道文件名的 Java 代码运行转换,以便在其上运行转换,您可以考虑定义一个全局参数,在运行转换之前将 Java 代码设置为文件名,并且XSLT 读出:

  <xsl:param name="file-id"/>

<xsl:template match="/">
<add>
<doc>
<field name="ID"><xsl:value-of select="$file-id"/></field>
<xsl:apply-templates select="//TEXT/*"/>
</doc>
</add>
</xsl:template>

请注意,您的其他模板相当冗长,可以缩短为

  <xsl:template match="*"> 
<field name="{name()}">
<xsl:value-of select="."/>
</field>
</xsl:template>

关于java - xsl 到 xml 转换添加不存在的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31240481/

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