在许多目录中,例如“AAA”、“BBB”和“CCC”,有数百个按月分类的文件夹,例如“201209”、“201310”和“201701”。每个月度文件夹中都有数百个 PDF 文件 - 所有文件都以 GUID 命名(123e4567-e89b-12d3-a456-426655440000)。
这就是磁盘上的情况。因此,每个 PDF 文件都有一个路径,如“AAA/201704/{123e4567-e89b-12d3-a456-426655440000}”
我已经能够将主要的 XML 文件中的每个案例编号拆分到一个文件夹中,例如“KN2012_00435”、“FN2015_01234”和“BN2017_08762”,并且在每个文件夹中,每个与该案例编号附在一起的 PDF 文件都有一个 XML 文件。
在这些 XML 文件中,PDF 文件的位置以 XML 属性 DocumentID="{123e4567-e89b-12d3-a456-426655440000}" 的形式声明。
我的第一个问题是创建一个 XSL 样式表以使该属性可点击。可以做到吗?
我的第二个问题是,我想将这些案例文件夹放在 PDF 文件的目录树中的目录中。
在文件中:
//casenumbers/KN2012_00435/{123e4567-e89b-12d3-a456-426655440000}
.... 有一个可点击的 GUID 前往....
//docs/AAA/201704/{123e4567-e89b-12d3-a456-426655440000}
可以这样做吗?
答案1
我认为您提供的信息不足以为您提供任何代码,但是是的,在 XSLT 2.0 中这是可能的。您需要 XSLT 2.0,以便 (a) 您可以使用 collection() 函数返回目录中的所有文件,以及 (b) 您可以使用 xsl:result-document 指令编写多个输出文件。
当您说希望某些内容“可点击”时,我假设这意味着您正在生成 HTML 并在浏览器中查看它。但这只是猜测。内容也可以是可点击的,例如,在 PDF 中。我不知道如何做到这一点,尽管可能可以做到。
答案2
我能够通过这段代码解决我的问题的第一部分:
<xsl:for-each select="//dbo.Documents/@DocumentID">
<tr bgcolor="#FBF5A4">
<td><xsl:value-of select="local-name()" /></td>
<td><a href="{.}"><xsl:value-of select="." /></a></td>
</tr>
</xsl:for-each>
第二个问题是调整“href”,以便它引用(在 Windows 文件系统中)K:\docs\anydirectory\anydirectory\{.}