我正在使用复制标记内的路径表达式,根据XSLT: Copy child elements of a complex type only once复制一些节点:
<xsl:copy-of select="/xs:schema/xs:complexType[@name=current()/xs:element/@type]"/>
在输出中,此语句处理的元素中缺少所有换行符。 (它们显示在其他地方)看起来像这样:
...</xs:complexType><xs:complexType....
我只能在之前和之后添加换行符,但不能在它们之间添加换行符。我怎么能做到这一点? Thanx为您提供帮助!
答案 0 :(得分:1)
您提供的数据太少,无法尝试任何测试。例如。目前尚不清楚,什么输出方法使用你的脚本。
XSLT脚本通常包含xsl:strip-space
指令,这会导致文本节点的规范化。
这种正常化a.o.更改“白色”字符的“内部”序列,包括换行符,
进入一个空间。
也许这就是原因。
另请参阅脚本中的xsl:output
指令。
它是否包含indent="yes"
属性?
如果没有,则输出在输出元素之间不包含换行符。
也许你的脚本在某些地方包含explicite换行符的输出
(例如<xsl:text>&#aA;</xsl:text>
),因此这些换行符 呈现。
但是如果您没有indent="yes"
属性,则不会插入换行符
连续元素之间的“自动”。
答案 1 :(得分:1)
您的XPath表达式仅选择xs:complexType
元素,而不是选择分隔它们的空格。
当您使用不使用混合内容的XSD等词汇表(注释中除外)时,最好使用xsl:strip-space
从输入中删除所有空白文本节点,然后生成新的输出中使用xsl:output indent='yes'
的空格。