XSLT 无法在 html 输出中添加 spacec,当节点包含其他 xml 节点并且它们之间有 space
XSLT failing to add spacec in html output , when a node contains other xml nodes and space between them
我在 XSLT 2.0 的输出中遇到问题。这里 saxon 处理器用于生成 html 输出。顺利运行。但是输出 html 无法在两个“variable.varref”元素之间添加 space。我搜索了 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>
造成这种情况的原因可能有很多,但有两条途径可以追求:(a) space 不存在于源代码树中,因为由于某种原因它在解析过程中被剥离了,并且(b) space 存在于源代码树中,但您的代码没有输出它。在没有看到您的任何代码的情况下,进一步推测并不明智,但是:
(a) 可能发生是因为您使用了配置为剥离 "insignificant" 白色 space 的解析器,或者因为样式表中的 xsl:strip-space,或者因为各种 Saxon 配置选项,如 -strip:all,或者因为有一个 DTD 或模式将 para 定义为具有纯元素内容(在这种情况下不太可能,因为源文档对此无效 DTD/schema).
(b) 可能会发生,因为您的处理没有 select 所有文本节点,或者因为它对它们调用了 normalize-space() ,或者由于其他一百万您的代码中可能存在的错误。
我建议将其简化为一个可重现的小示例,然后以完整形式发布您的(最小)源文档和样式表,以及您如何调用转换的详细信息。
我在 XSLT 2.0 的输出中遇到问题。这里 saxon 处理器用于生成 html 输出。顺利运行。但是输出 html 无法在两个“variable.varref”元素之间添加 space。我搜索了 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>
造成这种情况的原因可能有很多,但有两条途径可以追求:(a) space 不存在于源代码树中,因为由于某种原因它在解析过程中被剥离了,并且(b) space 存在于源代码树中,但您的代码没有输出它。在没有看到您的任何代码的情况下,进一步推测并不明智,但是:
(a) 可能发生是因为您使用了配置为剥离 "insignificant" 白色 space 的解析器,或者因为样式表中的 xsl:strip-space,或者因为各种 Saxon 配置选项,如 -strip:all,或者因为有一个 DTD 或模式将 para 定义为具有纯元素内容(在这种情况下不太可能,因为源文档对此无效 DTD/schema).
(b) 可能会发生,因为您的处理没有 select 所有文本节点,或者因为它对它们调用了 normalize-space() ,或者由于其他一百万您的代码中可能存在的错误。
我建议将其简化为一个可重现的小示例,然后以完整形式发布您的(最小)源文档和样式表,以及您如何调用转换的详细信息。