当前位置: 首页 > 知识库问答 >
问题:

XSL 2.0避免了xsl的重复输出:结果文档

程和蔼
2023-03-14

我使用xsl:result-document将输入XML文件拆分为多个子文档。当我的转换在输入文件上的一个大数组上运行时,两个输入“有数据”,因此xsl:result document会尝试创建同一个输出文件两次,从而出错。

理想情况下,我只想创建第二个文档,在文件扩展名之前添加“_2”。我是XSL 2.0的新手,无法想象如何实现这一点。如果有一个全局数组(更像是一个映射),可以保存文档中使用的每个输出文件名(以及一个计数器),那就太好了。不过,在XSL中实现这一点似乎并不简单。有人知道怎么做吗?

XSL变量的范围让我感到困惑,我想知道这是否可能。例如,如果我在第一个匹配的模板中创建了一个变量,那么该变量在模板中是否可见,这是第一个匹配模板的应用模板调用的结果?

另一个想法是,在进一步进行模板匹配之前,是否可以使用一些疯狂的“身份转换”来查找重复项并将“_2”附加到数据中?

谢谢你的时间。

使用结果文档使用示例进行编辑:

 <xsl:result-document href="{$directory_name}{$misc_string}.xml" format="MainOutput" cdata-section-elements="SomeSection">

克里斯

共有1个答案

黄博艺
2023-03-14

可以使用generate-id()。。。

<xsl:result-document href="{$directory_name}{$misc_string}{generate-id()}.xml" 
 format="MainOutput" cdata-section-elements="SomeSection">

您也可以使用xsl:number,但如果没有工作示例(XML和XSLT),就很难提供示例。(语境非常重要。)很可能是这样的:

<xsl:variable name="nbr">
    <xsl:number level="any"/>
</xsl:variable>
<xsl:result-document href="{$directory_name}{$misc_string}_{$nbr}.xml" 
    format="MainOutput" cdata-section-elements="SomeSection">

看一下xsl:number链接,并使用一些属性(比如@count),这样就可以了。

 类似资料:
  • 问题内容: 我需要一种方法来干扰编写xsl结果文档,以避免将它们写入文件系统。现在我的模板正在写到一个临时目录,然后我压缩该目录。我想用这种方式写到文件系统。我正在使用撒克逊处理器。可以使用仅使用标准Java库的解决方案。任何建议表示赞赏。 编辑: 我发现了.net saxon api的此类http://www.saxonica.com/documentation/dotnetdoc/Saxon/

  • 假设我想从许多xmls中编写具有以下格式的文本输出。其中一些xml文件可能没有节点[name、age、schood]的值。 <学生> 因此,基本上我使用的是iu正在使用的一个xsl文件,并试图通过考虑这些类似格式的xml文件(具有不同的节点值)来生成输出。 但是我只需要将相应的输出写到具有特定条件的xml文件中。[假设有一个名称,因为有些xml文件不包含名称值]。 因此,如果我有5个xml文件要转

  • 钱箱类: 商户类: 输入数据: 我的任务 计算每个商家的总金额并返回商家列表 我正在尝试使用Stream API解决这个任务。并编写了以下代码: 结果 但显然,流返回四个对象,而不是所需的两个对象。我意识到,地图(第二行)为每个cashBoxId创建了四个对象。而且我不知道如何通过进行过滤,也不知道如何获得没有重复的结果。

  • 问题内容: 我是mongodb的新手。我可以知道如何避免重复输入。在关系表中,我们使用主键来避免它。我可以知道如何使用Java在Mongodb中指定它吗? 问题答案: 在选项中使用索引。 您也可以跨多个字段执行此操作。 有关 更多详细信息和示例, 请参阅 文档中的 此部分 。 MongoDB索引可以有选择地施加一个 唯一的键约束 ,以确保不会插入任何索引键值与现有文档值匹配的文档。 如果希望从唯一

  • 创建表(int(10)不为空AUTO_INCREMENT,int(30),varchar(30),varchar(4)不为空,int(2)不为空,主键()); 创建表(varchar(10),主键()); 创建表(int(10),int(30),varchar(30),varchar(4),int(2), varchar(10), varchar(2)not null默认'p'); 分隔符$$ 为

  • 本文向大家介绍避免在MongoDB中重复输入?,包括了避免在MongoDB中重复输入?的使用技巧和注意事项,需要的朋友参考一下 为了避免在MongoDB中重复输入,可以使用。语法如下- 让我们实现以上语法。避免在MongoDB中重复条目的查询如下- 现在在上面的集合中插入一些记录。插入记录的查询如下- 每当您尝试再次插入相同记录时,都会出现此错误- 让我们插入另一条记录。查询如下- 在method