2021SC@SDUSC
在这次博客中我是对core文件夹下transformation文件夹下的IncludeTransformer进行分析,在此之前我已经对CIncludeTransformer进行了了解与分析。
IncludeTransformer.java(上)
1.总结
这个文件是一个简单的转换器,包括可解析的输入源(通过Cocoon的SourceResolver访问)。
这个转换器的一个有趣特性是,它实现了CacheableProcessingComponent接口,并提供了对缓存的完全支持。换句话说,如果给这个转换器的输入没有改变,并且所有包含的源都是(可缓存的)并且仍然有效,那么这个转换器将不会像CIncludeTransformer那样强制管道重新生成。
下面介绍了一些这个转换器的特性:
- 相对源解析
- 包含使用相对URI指定的源文件将相对于源文档位置进行解析。这与XIncludeTransformer行为一致,但与CIncludeTransformer不同。
- 根元素剥离
- 包含内容的根元素可以通过在include元素上指定strip-root="true"自动剥离。这与CIncludeTransformer提供的功能相同。
- 参数传递
- 传递给包含的源的参数可以通过两种方式指定:第一种方式是将它们编码到源本身。另一种方法允许由转换器自动完成参数的编码,这样就可以很容易地传递包含& (amperstand)或= (equals)字符的参数名称或值,这些字符在uri中是保留字符。
- 后备元素
- IncludeTransformer允许在include元素中指定回退元素。如果源包含导致异常,则将包含回退元素的XML内容,而不是源内容。回退元素可以嵌套包含元素。
- 并行处理
- 这个转换器的另一个特性是它允许并行处理包含。通过将可选参数parallel设置为true,将在并行线程中处理(包括)各种包含的内容,而不是在一个线程中串行处理。默认情况下,并行处理是关闭的。
- 递归处理
- 这个转换器允许递归处理包含。通过将可选参数recursive设置为true,将扫描包含的各种内容以查找包含元素,并以与传入XML事件相同的方式处理这些内容。这个参数可以在转换器定义中设置。这个特性类似于XInclude处理。默认情况下,递归处理是关闭的。
继承自AbstractTransformer
实现了Serviceable,Configurable,CacheableProcessingComponent接口
2.属性:
一些私有的静态的不可以修改的属性:
private static final String NS_URI = "http://ap