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

在运行时删除XSL输出文件生成

郤望
2023-03-14

我正在编写文本输出文件,使用XSL读取XML文件。

在这里,我试图检查源XML中是否有特定的内容,如果可用,则将该内容写入文件。

目前,我正在使用java读取创建的空文件并显式删除它们。诚恳地感谢。

共有1个答案

赵征
2023-03-14

我将给出两个如何做到这一点的例子--第二个是我推荐的:

假设我们有以下XML文档:

<nums>
  <num>01</num>
  <num>02</num>
  <num>03</num>
  <num>04</num>
  <num>05</num>
  <num>06</num>
  <num>07</num>
  <num>08</num>
  <num>09</num>
  <num>10</num>
</nums>

我们希望从中生成另一个,其中“删除”带有偶数的num元素。

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
     <nums>
       <xsl:apply-templates/>
     </nums>
 </xsl:template>

 <xsl:template match="num">
  <xsl:choose>
   <xsl:when test=". mod 2 = 1">
     <num><xsl:value-of select="."/></num>
   </xsl:when>
   <!-- <xsl:otherwise/> -->
  </xsl:choose>
 </xsl:template>
</xsl:stylesheet>
<nums>
   <num>01</num>
   <num>03</num>
   <num>05</num>
   <num>07</num>
   <num>09</num>
</nums>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="num[. mod 2 = 0]"/>
</xsl:stylesheet>

这里我们根本不使用任何“if-then-else”显式指令--只使用Xtemplate模式匹配,这是XSLT最显著的特性。

 类似资料:
  • 我已经能够使用pyInstaller从Python 3.4代码成功地生成Windows可执行文件。 但是,每次运行可执行文件(控制台应用程序)时,它都会在代码启动前输出以下内容: 我假设这是pyInstaller引导加载程序过程,如下所述。我想知道是否有一种方法可以抑制这个输出,而不抑制我自己的Python代码生成的输出? 附加信息: 生成单个可执行文件(使用选项) 运行在Windows 7 En

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

  • 我是Node.js的新手,我试图通过Node.js运行我的测试文件。我只是简单地键入“node.\tut63.js”,但它显示了以下错误: 错误:在function.module._resolveFilename(internal/module/cjs/loader.js:880:15)(internal/module/cjs/loader.js:725:27) 在function.module.

  • 我使用xsl:result-document将输入XML文件拆分为多个子文档。当我的转换在输入文件上的一个大数组上运行时,两个输入“有数据”,因此xsl:result document会尝试创建同一个输出文件两次,从而出错。 理想情况下,我只想创建第二个文档,在文件扩展名之前添加“_2”。我是XSL 2.0的新手,无法想象如何实现这一点。如果有一个全局数组(更像是一个映射),可以保存文档中使用的每

  • 我正在使用XSLT将包含复杂数据结构、自由文本等的xml文档转换为HTML文档。我处理的文档可以包含或不包含结构项,如果存在结构标记,则可以任意嵌套。数据标记可以引用任何类型的商品,因此我事先不知道XML文档的内容。 文件看起来像 desiderata HTML文档应类似于: 事实上,我不知道这是否是一个好的解决方案,但是因为我不知道我的xml是否包含结构标签,所以我使用了一个“开关”来在两个主模

  • 问题内容: 如标题所示,ltrace在我的系统上无法正常工作。在大多数情况下,它不显示任何输出,例如 我使用的是最新的ltrace版本(来自package ),我什至尝试从源代码重新编译也没有差异。我使用Ubuntu ,内核。gcc版本是。 奇怪的是,从Internet下载的二进制文件似乎可以正常显示库调用。 我想念什么?有人能够重现该问题吗? 问题答案: 这可能与使用编译二进制文件有关。我创建了