获取有关在输出中使用的附件的信息,如文件大小

时间:2016-08-26 06:56:40

标签: xslt xslt-2.0

我需要翻译像< a ref =“123.pdf”>这样的链接。到存在文件大小的链接,例如< a ref =“123.pdf”size =“22Kb”>。 pdf存在于包含inputfile的文件夹中。 有没有办法用xslt 2.0做到这一点? 有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

假设您可以使用Saxon 9的商业版本(即PE或EE)或支持EXPath file module的任何其他XSLT 2.0处理器,您可以按如下方式使用它:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:file="http://expath.org/ns/file"
    exclude-result-prefixes="xs file"
    version="2.0">

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

    <xsl:template match="a/@href[file:exists(resolve-uri(., base-uri()))]">
        <xsl:copy/>
        <xsl:attribute name="size" select="concat(file:size(resolve-uri(., base-uri())) idiv 1024, 'KB')"/>
    </xsl:template>

</xsl:stylesheet>

使用转换

的Saxon
<root>
    <a href="test2016082601.pdf">doc</a>
</root>

进入

<root>
    <a href="test2016082601.pdf" size="141KB">doc</a>
</root>