Xslt 文档函数是否总是在每次转换期间读取输入文件?
这是我关于文档功能的问题 文档函数是否总是为每次转换读取输入文件?还是第一次将其加载到内存中,然后从内存中读取以进行后续转换 这里提出这个问题的原因是,我有一个非常重要的输入文件,它在转换期间总是检查值 如何在这些情况下实现最佳性能 使用文档功能时,库无法 知道你是否会再次使用它,或者这是一个 临时访问。 任何时候处理文档时,都必须 解析等,这是比较耗时的。为了避免 多次重读和重新解析文档的开销, 库维护一个文档列表,作为 转换上下文。任何文档的已解析图像 已访问的将添加到此列表中,并且该列表与 它引用的文档只有在转换完成时才被释放 上下文被释放。当您使用文档功能时,库无法 知道你是否会再次使用它,或者这是一个 临时访问。 任何时候处理文档时,都必须 解析等,这是比较耗时的。为了避免 多次重读和重新解析文档的开销, 库维护一个文档列表,作为 转换上下文。任何文档的已解析图像 已访问的将添加到此列表中,并且该列表与 它引用的文档只有在转换完成时才被释放 上下文被释放。将从单个URL解析XML的详细信息委托给。它不指定是否缓存已解析的文档,但要求函数稳定,默认情况下,此函数为·稳定。如果解析为绝对URI引用后为两个调用提供了相同的URI引用,则对该函数的两个调用返回相同的文档节点。因此,如果下面的表达式不引发错误,它将始终为true:docfoo.xml是docfoo.xml 如果您想多次访问同一文档,则实现可能会缓存结果,但如果您加载多个大型文档而无法处理其中任何一个文档,则实现可能会成为一个缺点 您使用哪个XSLT2.0处理器?Saxon必须显式地丢弃缓存的文档,以便表明对文档'foo.xml'或文档'foo.xml'的调用通常是缓存的。将解析xml的详细信息从单个URL委托给。它不指定是否缓存已解析的文档,但要求函数稳定,默认情况下,此函数为·稳定。如果解析为绝对URI引用后为两个调用提供了相同的URI引用,则对该函数的两个调用返回相同的文档节点。因此,如果下面的表达式不引发错误,它将始终为true:docfoo.xml是docfoo.xml 如果您想多次访问同一文档,则实现可能会缓存结果,但如果您加载多个大型文档而无法处理其中任何一个文档,则实现可能会成为一个缺点Xslt 文档函数是否总是在每次转换期间读取输入文件?,xslt,xslt-1.0,Xslt,Xslt 1.0,这是我关于文档功能的问题 文档函数是否总是为每次转换读取输入文件?还是第一次将其加载到内存中,然后从内存中读取以进行后续转换 这里提出这个问题的原因是,我有一个非常重要的输入文件,它在转换期间总是检查值 如何在这些情况下实现最佳性能 使用文档功能时,库无法 知道你是否会再次使用它,或者这是一个 临时访问。 任何时候处理文档时,都必须 解析等,这是比较耗时的。为了避免 多次重读和重新解析文档的开销, 库维护一个文档列表,作为 转换上下文。任何文档的已解析图像 已访问的将添加到此列表中,并且该列表与
您使用哪个XSLT2.0处理器?Saxon必须显式地丢弃缓存的文档,以便表明对文档'foo.xml'或文档'foo.xml'的调用通常是缓存的。使用文档或文档读取的文档在转换期间几乎不可避免地会被缓存,因为这是满足规范中稳定性要求的唯一方法。但我认为您的问题是关于跨多个转换的缓存。这将取决于处理器 现在几乎没有理由使用Saxon 6.5。即使出于可移植性的原因,您想限制自己使用XSLT1.0,通常最好使用更新的Saxon版本
Saxon至少在当前版本中,我不记得6.5版本会在JAXP转换器的生命周期内缓存文档,因此如果您将同一个转换器用于多个转换,文档将不会被重新解析。为了更精确的控制,请考虑使用S9API API。这允许您使用DocumentBuilder在内存中构建文档树,然后将其作为样式表参数的值传递给每个转换,或者通过注册识别URI的URIResolver来响应对文档或文档的调用。当然,使用任何JAXP转换引擎,您都可以在URIResolver中实现自己的文档缓存。使用文档或文档读取的文档几乎不可避免地会在转换期间被缓存,因为这是满足规范中稳定性要求的唯一方法。但我认为您的问题是关于跨多个tr的缓存 信息。这将取决于处理器 现在几乎没有理由使用Saxon 6.5。即使出于可移植性的原因,您想限制自己使用XSLT1.0,通常最好使用更新的Saxon版本
Saxon至少在当前版本中,我不记得6.5版本会在JAXP转换器的生命周期内缓存文档,因此如果您将同一个转换器用于多个转换,文档将不会被重新解析。为了更精确的控制,请考虑使用S9API API。这允许您使用DocumentBuilder在内存中构建文档树,然后将其作为样式表参数的值传递给每个转换,或者通过注册识别URI的URIResolver来响应对文档或文档的调用。当然,对于任何JAXP转换引擎,您都可以在URIResolver中实现自己的文档缓存。例如,如果转换被调用100次,那么首先调用document函数读取文件并将其作为解析的图像/对象加载到内存中。从第二次调用开始,每当调用document函数时,它只引用对象,不再调用文件读取。你是这么说的吗?对不起,我还是很困惑。如果您有示例或链接来解释更多内容,请提供帮助。例如,如果转换被调用100次,则首先调用document函数读取文件并将其作为解析的图像/对象加载到内存中。从第二次调用开始,每当调用document函数时,它只引用对象,不再调用文件读取。你是这么说的吗?对不起,我还是很困惑。如果您有更多的示例或链接来解释,请提供帮助。是的,Saxon 6.5.5 for XSLT 1.0My注释在您将问题标记为XSLT-2.0时指的是Saxon 9.5和XSLT 2.0。您对XSLT 1.0有什么想法吗?是的,Saxon 6.5.5 for XSLT 1.0My注释在您将问题标记为XSLT-2.0时指的是Saxon 9.5和XSLT 2.0。您对XSLT 1.0有什么想法吗?