我在XSLT 2.0的输出中遇到了一个问题。这里的saxon处理器用于生成html输出。它运行顺利。但输出html无法在两个" variable.varref "之间增加空间。元素。我搜索了xsl:preserve,不幸的是它对我没用。如何处理这个问题。请指教?
<note client.key="v925767807">
<content.unit client.key="v925767808">
<para language="en_ww" client.key="v925767809">
You can sign up for an account on <variable.varref variable.name="eprint_center"/> <variable.varref variable.name="eprint_center_retire2"/>, and sign in to configure the test settings.
</para>
</content.unit>
</note>
答案 0 :(得分:2)
这可能有很多原因,但要追求的两个途径是:(a)源树中没有空间,因为它在解析过程中因某种原因被剥离,而且(b)空间是存在于源树中但您的代码未输出它。在没有看到任何代码的情况下,进一步推测是不明智的,但是:
(a)可能因为你使用了一个解析器来配置剥离“无关紧要”的空格,或者因为样式表中的xsl:strip-space,或者因为各种Saxon配置选项如-strip:all,或者因为那里是一个DTD或模式,它定义para以具有仅元素内容(在这种情况下不太可能,因为源文档对此DTD /模式无效)。
(b)可能是因为您的处理没有选择所有文本节点,或者因为它们对它们调用了normalize-space(),或者是因为代码中有数百万个其他可能的错误。
我建议将其缩小为一个可重复的小例子,然后以完整的形式发布您的(最小)源文档和样式表,以及如何调用转换的详细信息。