Xml XSLT追加Ctrl+;每行末尾有M个字符
我正在尝试使用xslt转换xml文档。虽然我得到了所需的结果,但我在文档末尾看到了ctrl+M char。如何确保在行尾之前未填充额外的^MXml XSLT追加Ctrl+;每行末尾有M个字符,xml,xslt,Xml,Xslt,我正在尝试使用xslt转换xml文档。虽然我得到了所需的结果,但我在文档末尾看到了ctrl+M char。如何确保在行尾之前未填充额外的^M <xsl:template match="node()|@*" name="identity"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
这不是dos到unix的问题。我正在linux平台上为一个文档运行xslt
下面是示例输出
<variables>^M$
<variable name="enableLog" value="false" />^M$
<variable name="enableCache" value="true" />^M$
<variable name="protocol" value="http" />^M$
<variable name="port" value="8080" />^M$
</varilabes>^M$
^M$
^M$
^M$
^M$
^M$
^百万美元
我认为你所说的Ctrl+M字符,实际上是a,一些编辑器将其显示为^M
。如果在显示Ctrl-J/Ctrl-M(换行符、回车符)字符的不支持XML的编辑器中查看生成的XML,那么这就是在每行末尾看到这些字符的原因
在XML中使用Ctrl-M作为行尾字符是完全有效的。事实上,它甚至被推荐。创建XML(包括XSLT处理器)的产品可以在换行符和回车符之间进行选择,或者在换行符和回车符之间进行选择。更具体地说,来自:
2.11线端处理XML解析的实体通常存储在计算机文件中,为了便于编辑,这些文件被组织成行。这些行通常由回车符(#xD)和换行符(#xA)的组合分隔 由于XML是用于机器阅读的,并且是人类可读的,所以选择一个理解XML的编辑器,就像或者,甚至,或者一些简单的东西就足够了,它们都理解行尾 注意:如果确实要删除任何和所有行尾,请将以下内容添加到样式表中:
<xsl:strip-space elements="*" />
<xsl:output indent="no" />
并确保应用了所有文本节点,以便可以执行以下操作来删除被认为重要的空文本节点:
<xsl:template match="text()[not(normalize-space())]" />
但是,这仍然会留下任何已经有换行符的文本节点。如果您也需要删除这些,请执行以下操作:
<xsl:template match="text()">
<xsl:value-of select="translate(., '

', ' ')"/>
</xsl:template>
请向我们展示输入文档、完整的样式表代码和完整的输出文档。显然,您所展示的不是输出文档—XSLT永远不会生成以/variables
结尾的变量
元素。告诉我们文件是如何保存的,您是如何调用转换的,您使用的是什么风格的linux,您使用的是哪个XSLT处理器,以及您使用的是什么应用程序来查看结果。感谢您的输入。我在同一行还有另一个问题。内联注释将被移动到除ctrl+m之外的下一行。你知道这种行为吗?是否由于在元素末尾插入回车符?我应该如何保留原始的行尾字符请不要在评论中提出补充问题。提出一个新问题。@prabhushankar:我同意Michael Kay的观点,请提出一个新问题(并在这样做时遵循Matthias的建议)。但归根结底是XML,扩展一下,XSLT并不是用来处理行尾字符的,因为它们在XML中是不相关的。但是,在您正确应用上述解决方案后,这些行尾字符将被删除。如果没有,用一个可重复的、最少的例子来说明你在一个新问题中做了什么。