转换 XSL

Posted

技术标签:

【中文标题】转换 XSL【英文标题】:Transformation XSL 【发布时间】:2015-05-29 19:07:30 【问题描述】:

我对 XSL 有一些疑问。

    我有以下 XSL 文件。

XSLT 2.0

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template name="main" match="/">
        <xsl:for-each select="collection('file:///C:/Users/Quality/Documents/ProyectoComerciales/download_files/?select=*.txt;unparsed=yes')">
            <xsl:variable name="file" select="tokenize(document-uri(.), '/')[last()]"/>
            <xsl:variable name="name" select="substring-before($file,'.')"/>
            <xsl:variable name="url" select="concat('file:///C:/Users/Quality/Documents/ProyectoComerciales/xml/',$name,'.xml')"/>
            <xsl:result-document method="xml" indent="yes" href="$url">
                <xsl:variable name="path" select="concat('file:///C:/Users/Quality/Documents/ProyectoComerciales/download_files/',$file)"/>
                <xsl:variable name="text" select="tokenize(unparsed-text($path),'&#xD;&#xA;')"/>
                <download>
                    ...
                </download>
            </xsl:result-document>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

但是有可能知道转换何时正确完成吗?

    可以将 XSL 与数据库连接吗?因为我必须将转换的结果保存在我的数据库中

【问题讨论】:

您使用什么 xslt 处理器?它可能会以不同于0...的退出代码终止... 用 Java 中的 Saxon (sacon9eh.jar) 调用我的 XSL 【参考方案1】:

(1) 如果您查看从 Java 调用 Saxon 的 API(JAXP API 或 s9api API),您会发现所有相关方法都定义了异常。如果转换失败,则会抛出这些异常之一。您还可以通过指定 ErrorListener 在错误发生时接收通知来获取有关错误的更多详细信息。

(2) 将转换结果存入数据库是您的 Java 代码的责任。如果您希望辅助结果文档(即 xsl:result-document 的输出)进入数据库,Saxon 允许您指定一个 OutputURIResolver,它将在每个结果文档可用时调用。

【讨论】:

以上是关于转换 XSL的主要内容,如果未能解决你的问题,请参考以下文章

转换前更新 XSL 文件

XSL 转换以输出许多嵌入式 XSL 样式表

如何解决从字符串加载 XSL 的转换中包含的 XSL?

如何加快 XSL 转换?

如何使 xsl 转换缩进输出?

使用 XSL 将 json 转换为 XML