我有一大堆XSL,我们最近经历过并使用公共位实现了一个共享的XSL模板。我们现在在所有主要的XSL中包含了一个xsl:include来提取这些内容。在我们开始对共享XSL进行更改之前,我们一开始没有问题。
有关信息,整个系统是基于Web的,调用查询以通过XSL FO和RenderX动态格式化数据库中的文档给定不同的XSL。
主要转变是:
let $fo := util:expand(transform:transform($articles, doc("/db/Customer/data/edit/xsl/Custbatch.xsl"), $parameters))
XSL(Custbatch.xsl)有:
<xsl:include href="Custshared.v1.xsl"/>
如果我们对&#34; Custshared.v1.xsl&#34;进行编辑没有反映在结果中,因为很明显&#34; Custshared.v1.xsl&#34;正在被缓存和使用。我们知道这一点,因为您可以看到名称现在包括&#34; v1&#34;。如果我们进行更改并更改从v1到v2的所有引用,则一切正常。但这似乎有点荒谬,因为这意味着我们必须改变包含这个XSL的18个XSL,或者做一些愚蠢的事情,比如重新启动数据库。
所以,我在setup或controller.xql(在所有不匹配的路径上都有以下内容)中缺少什么,以使事情不被缓存。我认为这都是内部的,所以这个设置可能并不重要。配置中是否有其他设置?
<dispatch xmlns="http://exist.sourceforge.net/NS/exist">
<cache-control cache="no"/>
</dispatch>
在阅读此处的文件:http://exist-db.org/exist/apps/doc/xsl-transform.xml时,它声明:
&#34;样式表将使用标准Java API(javax.xml.transform)编译成模板。模板在函数的所有实例之间共享,并且只有在自上次调用后进行修改才会重新加载。&#34;
但是,如果我更改了包含的XSL,则不会使用它。
更新#1
我甚至创建了一个返回包含的XSL的查询,然后我使用:
<xsl:include href="http://localhost/get-include-xsl.xq"/>
这确实有效,因为格式化没有被破坏,但更改底层XSL会产生相同的结果。所以即使是Xquery结果也是缓存的。
更新#2
是的,通过一些简单的测试,所有都证明了。 如果我对根模板进行任何更改(例如添加无意义的空间)并运行,它确实包括在include中进行的更改。如果我仅更改包含的XSL,则不会发生任何更改。
因此缺少其他任何东西,我们总是可以编写一个Xquery,在对include模板进行更改后,它基本上会触及所有主模板。似乎错误的解决方法。
更新#3
所以我们目前使用的解决方法是我们有一个未使用的&#34;变量&#34;在XSL(版本)中,当我们更新共享模板时,我们执行该查询,该查询基本上更新了该变量中的值。至少它只有一个XQuery,也许我们应该附加一个触发器。
答案 0 :(得分:1)
XSL转换器的runfile('C:/Users/220/tutorials-master/tensorflowTUT/tf18_CNN2/full_code.py', wdir='C:/Users/220/tutorials-master/tensorflowTUT/tf18_CNN2')
Extracting MNIST_data\train-images-idx3-ubyte.gz
Extracting MNIST_data\train-labels-idx1-ubyte.gz
Extracting MNIST_data\t10k-images-idx3-ubyte.gz
Extracting MNIST_data\t10k-labels-idx1-ubyte.gz
Traceback (most recent call last):
File "<ipython-input-1-b66fc51270cf>", line 1, in <module>
runfile('C:/Users/220/tutorials-master/tensorflowTUT/tf18_CNN2/full_code.py', wdir='C:/Users/220/tutorials-master/tensorflowTUT/tf18_CNN2')
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/220/tutorials-master/tensorflowTUT/tf18_CNN2/full_code.py", line 66, in <module>
prediction=tf.nn.softmax(tf.matmul(h_fc1_drop,W_fc2),b_fc2)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 1531, in softmax
return _softmax(logits, gen_nn_ops._softmax, dim, name)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 1491, in _softmax
logits = _swap_axis(logits, dim, math_ops.subtract(input_rank, 1))
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 1463, in _swap_axis
math_ops.range(dim_index), [last_index],
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py", line 1163, in range
return gen_math_ops._range(start, limit, delta, name=name)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_math_ops.py", line 1740, in _range
delta=delta, name=name)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 768, in apply_op
op_def=op_def)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 2338, in create_op
set_shapes_for_outputs(ret)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 1719, in set_shapes_for_outputs
shapes = shape_func(op)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 1669, in call_with_requiring
return call_cpp_shape_fn(op, require_shape_fn=True)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\common_shapes.py", line 610, in call_cpp_shape_fn
debug_python_shape_fn, require_shape_fn)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\common_shapes.py", line 676, in _call_cpp_shape_fn_impl
raise ValueError(err.message)
ValueError: Shape must be rank 0 but is rank 1
for 'limit' for 'range' (op: 'Range') with input shapes: [], [10], [].
中有一个设置可以关闭缓存:$exist-db-root$/conf.xml
(默认为'是')