用XSLT 2.0成批处理XML

大多数人都希望 Saxon 这样的 XSLT 处理程序能使用多个输入文件。常常会遇到这样的问题,需要将一个目录中的 XML 文件转换成 HTML。可以对这些文件分别使用 Saxon,但是如果最后希望生成一个文件包含所有那些 HTML 文件的索引,那该怎么办呢?

您需要的是目录列表的 XML 版本。这样就可以将这个 XML 文件作为 XSLT 的惟一输入文件,并用 XSLT 处理每个文件。如果 XSLT 能够直接进行目录处理就很完美了。不幸的是,尽管 XSLT 很强大,特别是 XSLT 2.0,但这种语言却没有目录操作。

HXDLG 来帮忙!

在网上冲浪的时候,我从 SourceForge 上发现了一个不起眼的小 Java 程序,HTML/XML Directory List Generator (HXDLG)(请参阅 参考资料)。HXDLG 的一项功能就是创建目录列表的 HTML 或 XML 表示。我下载了该工具,并从命令行运行清单 1 所示的语句。

清单 1. 使用 HXDLG 创建 XML 目录的代码

java -jar hdlg.jar XML
  /Users/jherr/Projects/ibm_xml_tips/filelist/testfiles/
  /Users/jherr/Projects/ibm_xml_tips/filelist/files.xml

这个程序有三个参数。第一个参数是输出类型,即 XML 或者 HTML。第二个是目录路径,第三个是输出 XML 文件的路径。结果如清单 2 所示。

清单 2. XML 格式的目录

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hdlg:filesystem SYSTEM
  "http://www.hdlg.info/XML/filesystem.dtd">
<hdlg:filesystem
xmlns:hdlg="http://www.hdlg.info/XML/filesystem">
  <hdlg:folder name="testfiles"
   url="file:/Users/jherr/Projects/ibm_xml_tips/filelist/testfiles/">
    <hdlg:file name="test1.xml" size="179"
     type="unknown"
  url="file:/ibm_xml_tips/filelist/testfiles/test1.xml">
    </hdlg:file>
    <hdlg:file name="test2.xml" size="181"
     type="unknown"
  url="file:/ibm_xml_tips/filelist/testfiles/test2.xml">
    </hdlg:file>
    <hdlg:file name="test3.xml" size="181"
     type="unknown"
  url="file:/ibm_xml_tips/filelist/testfiles/test3.xml">
    </hdlg:file>
  </hdlg:folder>
</hdlg:filesystem>

时间: 2024-11-05 12:12:29

用XSLT 2.0成批处理XML的相关文章

wince 利用MSXML 3.0 读写xml文件

Simple XML Parsing on WinCE 4.2 Using C++ and MSXML 3.0 This article will show you how to parse XML files on WinCE using MSXML 3.0, a XML parser from Microsoft. Okay, there are many articles around showing you how to parse XML, but not that many for

在 XSLT 2.0 中创建多个文件

创建 XSLT 的第一个版本有很大的局限性,只能有一个输入和一个输出(虽然可以有多个模板文件).该标准的第 2 版仍然要求一个输入,但是输出系统更加灵活了.现在可以使用 xsl:result-document 指令产生多个输出文件.这一新的标签有两个重要属性,如表 1 所示. 表 1. xsl:result-document 属性 属性 说明 href 输出文件的文件名或者完全限定的 URL format 使用的格式名,如对应 xsl:output 指令中所定义的 为了试验该指令,我设计了一个输

用XSLT 2.0生成PHP

在两部分组成的关于 XSLT 的系列文章的第一期中,介绍了 XSLT 2.0 的一些新特性,并说明了如何从抽象数据模型生成代码.为了示范这一过程,我建立了项目,开发一个健壮的代码生成器,为数据库服务器生成 SQL,并为 Web 服务器生成用于访问数据库的 PHP.我使用多层转换通过 XSL 构建 SQL.首先将抽象模型转化成数据库物理模式模型,然后使用该模式模型构建 SQL 代码. 接下来就要构建代码模型并从这个模型生成 PHP.在结束项目时,您将拥有系统的抽象模型.构建数据库的 SQL 代码和

用XSLT 2.0生成SQL

假定您是一名新的 PHP 项目的工程团队主管,并且要求必备的条件都已满足,初步的数据模型包括大约 150 个表.现在该考虑一下进度表了.估计您每天能编写一个数据库访问类并完成其单元测试,因此,150 个表要用 150 天的时间.假设每个月工作 20 天,是不是要用将近八个月的时间来编写数据库访问层? 这样做可能不行,需要有一种方法来缩短所需的时间.您可以使用持久性框架,但即使这种框架能够把时间减半,仍然还需要四个月的时间.您还可以编写通用的类库,但是这样的库使用起来复杂不说,而且还非常容易出错,

C# 3.0 其他XML技术

使用XmlReader枚举结点: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <customer id="123" status="archived"> <firstname>Jim</firstname> <lastname>Bo</lastname> </cu

使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法_java

在 Java SE 6 所提供的诸多新特性和改进中,值得一提的是为 Java 程序提供数据库访问机制的 JDBC 版本升级到了 4.0, 这个以 JSR-221 为代号的版本 , 提供了更加便利的代码编写机制及柔性 , 并且支持更多的数据类型 . JDBC 4.0 的新特性分为下述四类: 1. 驱动及连接管理 2. 异常处理 3. 数据类型支持 4. API 的变化 以上说这么都不是本文要讲的重点内容,下面给大家介绍jdbc4.0操作xml类型数据的方法,具体详情如下所示: 在JDBC4.0推出

.NET 2.0 中XML数据的处理

SqlDataSource和ObjectDataSource控件都是平面表格式的数据源控件,操作也相对简单,在这里我就不细说了. 在这里我主要谈下用于连接XML文件的XmlDataSource和用于连接站点导航数据的SiteMapDataSource这两个层次数据源控件中XmlDataSource数据绑定到平面表格控件的一起东东. XmlDataSource控件允许其它控件绑定到XML数据.XmlDataSource支持DataFile属性,它被用于指定作为输入(input)的XML数据文件的路

Dreamweaver8新功能:建立XSLT页可视化操作XML数据

dreamweaver|dreamweaver8|xml|数据 开言DW8这个新的功能究竟好在哪里?这不得不先说了一些令初学者感到犯晕的多个技术名词.但注意:本文主要是进行例题的过程说明,您可以按照步骤很轻松地完成本案项目.不过终究会在操作进行时会遇到一些概念,这里先预介绍,内容只做概要,相关具体内容可搜索参考详细.先说XML这是什么?越来越多的站点开始应用了XML,最常见的就是各个BLOG中存在RSS.SO,现在出现了两个技术名词:XML和RSS.· 请大家多动手,多看多观察如下几个站点的RS

使用Visual Basic 9.0进行XML编程

到目前为止,您可能已听说过LINQ(语言集成查询),它是Visual Studio 2008中附带的新查询技术.启用LINQ的语言(如Visual Basic)为您提供了一组丰富的查询运算符,您可以将这些运算符应用到各种数据源,如内存中的集合.数据库.数据集和XML.仅这一项技术就已经非常优秀了,但Visual Basic 9.0实际上提供的技术远不止此,它使XML成为直接集成到语言中的一流数据类型. 现在您可能想知道为什么需要将 XML 数据类型直接集成到Visual Basic中.当今,许多