XSLT 文档功能 - 文件夹层次结构

2023-12-20

我正在使用 xslt 1.0 并尝试使用 XSLT 文档功能将样式表应用到文件夹层次结构。文件夹结构如下,但我似乎无法在网上找到任何关于如何执行此操作的可靠参考。

a/
└── b
    └── c
        ├── d
        ├── e
        ├── f

有没有一种方法可以通过文件夹 a 中的文件将样式表应用到文件中的节点、文件夹 f 中(a 具有指向文件夹层次结构中的文件名的链接)。

更新#2

book01.xml
<?xml version="1.0" encoding="utf-8" ?>
<book location="../collection/book01.xml">
    <chapter>chapter001</chapteer>
</book>

chapter01.xml
<?xml version="1.0" encoding="utf-8" ?>
<chapter location="../collection/book01/chapter01.xml">
    <page>page01</page>
</chapter>

page01.xml
<?xml version="1.0" encoding="utf-8" ?>
<page location="../collection/book01/chapter01/page01.xml">
    <pagenumber>page 1</pagenumber>
    <text>
      page one.
    </text>
</page>

Output

Book Name: Book XX
  Chapter XX
    Page XX
      page xx.

我不确定这是否是在您的用例上下文中实现您想要实现的目标的可行/合理的方法;但是,您可以坚持最初的计划,即与xsl:for-each and document().

例如,假设您有包含路径列表的输入文件:

<files>
    <file>book001.xml</file>
    <file>chapter001.xml</file>
</files>

此输入可以合理地用于定义包含所有输入文档的变量并应用模板:

<xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    version="1.0">

    <xsl:template match="files">
        <xsl:variable name="docs">
            <docs>
                <xsl:for-each select="file">
                    <xsl:copy-of select="document(.)"/>
                </xsl:for-each>
            </docs>
        </xsl:variable>

        <xsl:apply-templates select="msxsl:node-set($docs)"/>
    </xsl:template>

    <!-- now you can match elements of your xml files -->

</xsl:stylesheet>

请注意,我需要扩展函数才能评估节点集。这绝对可以在xsltproc,或者您也可以从 EXSLT 获取它。

在示例中,我假设输入文件位于 book001.xml 和chapter001.xml 文件的同一文件夹中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSLT 文档功能 - 文件夹层次结构 的相关文章

随机推荐

  • 如何将配置文件添加到Spark 1.2.0中所有Spark执行器的类路径中?

    我正在使用类型安全配置 https github com typesafehub config https github com typesafehub config 使用配置文件参数化在纱线集群模式下运行的 Spark 作业 Typesa
  • 更改 matplotlib 中注释箭头的宽度

    我正在绘制一个箭头matplotlib using annotate 我想让箭头变粗 我想要的效果是一个带有细边缘线的双头箭头 我可以控制箭头宽度 即不改变linewidth 我努力了kwargs例如width after this htt
  • php 不扫描文件的相对路径

    这是我当前的代码 我为我第一次尝试 php 感到非常自豪 问题是 glob 在根目录 该脚本所在的位置 中再次正常工作 但是当我将其指向特定文件夹时 它返回找到的 0 个文件 我已经包含了 ftp 客户端的屏幕截图 显示了目录结构 如下 所
  • 有没有办法分部分读取大文本文件?

    我有一个大文件 60mb 我正在将文件读入字符串中 然后将该字符串返回给另一个方法 现在 当我将文件读入字符串时 它会给出系统内存不足异常 有没有办法分段读取文件并将其附加到字符串中 如果没有 有办法解决这个问题吗 static publi
  • Excel 中每 n 行求和

    28 10 100 29 210 30 40 20 84 41 130 42 43 30 75 44 740 45 46 40 73 47 220 如何对每 3 行 A29 A41 A44 A47 求和 我尝试了各种建议 例如this ht
  • 避免“在数字 eq (==) 中不是数字”警告的最佳方法

    usr bin env perl use warnings use 5 12 2 my c f could be a number too if c eq d c 9 say Hello world 避免 Argument f isn t
  • 使用对象属性作为字典中的键

    我想使用对象属性作为字典的键 这可以做到吗 这样做的最终目标是使用它 以便可以在对象可能处于的各种状态下查看属性是否被锁定 这些锁定的值不会持久存在 仅存在于模型的业务规则中 查看字段是否被锁定的理想代码如下所示 bool ageLocke
  • 如何将列名作为参数传递给 dplyr 动词的函数?

    我不知道为什么将参数从自定义函数传递给group by不起作用 我只是通过一个colName从数据集中 当我运行自己的函数时 会出现错误 必须按 data 中找到的变量进行分组 未找到列 colName 在下面的示例中我使用quakesR环
  • GTK 在哪里找到与 gtk_image_new_from_icon_name() 一起使用的图标名称?

    GTK 可以通过 当前图标主题中的图标 的名称来构造图像 例如 usr bin env python import gtk wnd gtk Window img gtk Image img set from icon name go jum
  • 如何指定应在新克隆中检出哪个分支?

    在 Git 扩展中 用户可以在克隆存储库时指定哪个分支 可能不是master 应在生成的克隆中进行检查 我怎样才能在命令行上做到这一点 通常 答案就在手册页中 在git clone手册页 在这里 branch
  • 如何在 Spring JPA 中为quartz作业运行更新查询

    我在 spring 4 有一份quartz 工作 我正在使用 JPA hibernate 通过quartz 工作更新数据库值 但我得到了javax persistence TransactionRequiredException Execu
  • 升级 Android Gradle Plugin 7.1 后无法加载类 AndroidComponentsExtension

    我最近下载了Android Studio 大黄蜂 https developer android com studio releases bumblebee它询问我是否想要升级到 Android Gradle Plugin 7 1 0 该版
  • 以编程方式获取插件的 Jenkins 配置

    我正在尝试获取 并希望更改 Groovy 控制台内带有 Groovy 脚本的插件的 Jenkins 配置 我的具体示例是尝试更改publish over ssh插件的多个IP地址 通过命令行 编辑 xml 可以很容易地做到这一点 但是经过几
  • 使用 asyncio 创建最小的 HTTP 服务器

    虽然我熟悉 HTTP 服务器和事件循环 但在掌握 Python 的内部工作原理时遇到了一些困难asyncio https docs python org 3 library asyncio html 作为学习练习 我一直在尝试编写一个最小的
  • 如何将 jQuery .live() 转换为 .on() 并将事件绑定到此?

    我正在将已弃用的代码转换为 live API to on 参见jQuery 1 7 发行说明 http blog jquery com 2011 11 03 jquery 1 7 released 我附加了现场活动this在多个自定义 jQ
  • Android 设置超时时间的方法

    如果在特定时间段内服务器没有响应 是否有任何方法可以在 android 中设置超时 以下是我用于超时的代码 uri new URI url HttpGet method new HttpGet uri method addHeader Co
  • 您最喜欢用什么方法来检查 HTML COLOR 是否有效?

    我使用 C 和 ASP NET 4 WebControls 我的页面上有一个文本框 用户可以输入十六进制格式 ff0000 或 HTML 格式 红色 的 HTML 颜色 我最初的想法是 编写一个能够验证该用户输入的正则表达式太困难了 因此我
  • 如何通过 matplotlib 在矩形条上绘制温度(应力)?

    我尝试使用 matplotlib 库绘制梁的应力 我已经使用公式计算并绘制了它作为示例 如图 1 所示 您会看到绿色光束在元素 3 和元素 8 处具有更大的应力 因此如果我用彩虹渐变填充颜色 蓝色光束的整体颜色将相同 但绿色光束将具有不同的
  • 警报通知立即触发。安卓

    我正在开发一个提醒 它会在固定时间向用户发送通知 警报立刻响起 我尝试了大部分建议stackoverflow 但仍然有同样的问题 请帮我解决这个问题 服务器数据 user reminder id 75 name Morning Snacks
  • XSLT 文档功能 - 文件夹层次结构

    我正在使用 xslt 1 0 并尝试使用 XSLT 文档功能将样式表应用到文件夹层次结构 文件夹结构如下 但我似乎无法在网上找到任何关于如何执行此操作的可靠参考 a b c d e f 有没有一种方法可以通过文件夹 a 中的文件将样式表应用