java - 删除运行时生成的 XSL 输出文件

标签 java exception xslt runtime

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

在这里,我尝试检查源 XML 中特定内容是否可用,并将该内容写入文件(如果可用)。

但是如果内容不可用(不满足“”条件),则输出文件将为空文件。

所以我想添加一个 else 条件并在该 else 条件下避免在运行时创建 XSL 输出文件。

有人有任何线索吗?

不会有帮助,因为它确实生成输出,但只是终止 XSL 的进一步处理。

任何机构都可以提供帮助,甚至建议在 Java 代码中采取任何其他方法,即使在创建文件后不删除文件。 [通过阅读它们并识别空文件]

目前我正在使用java读取创建的空文件并显式删除它们。提前致谢。

最佳答案

我将给出两个示例,说明如何做到这一点——第二个是我推荐的:

假设我们有这个 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:otherwise>并且它被注释掉了。

更好的解决方案:

<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>

这会产生相同的正确结果。

在这里,我们使用匹配 num 的模板覆盖身份规则。具有偶数值和空主体的元素——执行“删除”。

请注意:

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

关于java - 删除运行时生成的 XSL 输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10816575/

相关文章:

java - 如何将 Set<String> 转换为 String[]?

java - 如何用Java中预先编写的方法抛出我自己的异常?

使用 lock() 的 C# 事件监听器仍然抛出异常

javascript - 如何使用 javascript 将 xsl 样式应用于 html 中的嵌入式 xml

xml - 如何使用 XSLT 从子节点获取父节点

java - 使用 arraylists 得到错误的输出

java - 如何忽略来自 Eclipse 中特定文件夹的 XML 警告?

php - Symfony2 扩展了 Exception 类

xml - XPath 中过滤器表达式的关联性

java - 手动编译而不是使用 netbeans 时 Java 中奇怪的文本格式