我正在尝试报告Spring配置: 当然,XML有很多深度,重要的部分非常深入。 有趣的流程可以总结如下,省略了多个属性元素。
bean
-property
--list
---bean
----property name="phaseName"
----property name="pluginID
----property name="fileSpecifications"
-----set
-------bean
--------property name="dataStoreName" value="courses"
--------property name="columnNames"
---------list
----------value
----------value
在xsl中,我进入第二个bean级别并提取pluginID,然后找到“fileSpecifications”,我得到“dataStoreName”。 我无法理解,Saxon还提取了很多空行和额外标签的值列表。
额外的文本来自名为“columnNames”的属性,该属性未在任何地方的XSL文件中引用。 在通过添加xsl:message语句进行调试时,我无法确定哪个模板正在进行此提取。
如果在邮件列表中难以阅读,我创建了一个博客条目http://blog.artifact-software.com/tech/?p=296,描述了可以下载和执行的文件。 如果需要,我可以提供更多样本阶段文件。
xsl中有一个更高级别的处理,它读取主配置并查找导入的所有文件。 它将文件与阶段匹配,以便可以按照处理阶段的相同顺序报告阶段。 xsl构建列表,然后依次处理每个文件。
即使我删除了提取dataStoreName值属性的代码,我仍然会得到columnNames值列表。
这是一个知道错误还是我做了些傻事?
从输出中提取
<tr>
<td class="header">Bean Name</td>
<td class="header">Plugin Name</td>
<td class="header">DataStore Name</td>
</tr>
<tr>
<td class="id">CourseWriterOutputting a row</td>
<td class="pluginId">Plugin ID:CourseFileWriter<br>Usage Description</td>
<td class="dataStoreName"></td>
<td>
courses
TITLE
PMI_REPORTING_NUMBER
IIBA_REPORTING_NUMBER
DEFAULT_CURRENCY
PRICE
OFFERING_TEMPLATE_NO
ABSTRACT
xsl的提取物是 输出表格 / XSL:可变&GT;
<caption><xsl:value-of select="$phaseName" />
from <xsl:value-of select="$resourceName" /></caption>
<tr>
<td class="header">Bean Name</td><td class="header">Plugin Name</td>
<td class="header">DataStore Name</td>
</tr>
<xsl:apply-templates select="document($fileName)/sb:beans/sb:bean" />
<xsl:apply-templates
select="document($fileName)/sb:beans/sb:bean/sb:property[@name='plugins']/sb:list" mode="plug-in"/>
</table>
</xsl:template>
答案 0 :(得分:0)
有人建议它可能是XSLT内置模板,我发现Why does XSLT output all text by default?给了我关于如何找到泄漏的提示。
这导致对单个输入文件版本的测试,这使我能够找到泄漏的来源
我需要收紧内部应用模板上的选择,以便它只显示我想要的<property>
而不是所有属性。
我将使用修订后的源代码更新博客文章
我在原始参考文献中链接到源代码时没有遇到任何问题,但是从现在起大约10年后你的观点非常好
我不愿意发布数百行代码和更多输入行,但即使没有看到代码,你也确定了我悲伤的根源。