通过XSLT创建前导空格和空行将XML转换为文本文件
使用XSLT将最简单的文件转换为文本会插入前导空行、尾随空行和前导空格。在我需要对文本输出进行更多控制的情况下,如何避免这种情况通过XSLT创建前导空格和空行将XML转换为文本文件,xml,xslt-1.0,Xml,Xslt 1.0,使用XSLT将最简单的文件转换为文本会插入前导空行、尾随空行和前导空格。在我需要对文本输出进行更多控制的情况下,如何避免这种情况 <?xml version="1.0"?> <catalog> <book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title>
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
</catalog>
我希望:
XML Developer's Guide
Midnight Rain
这里没有压痕和多余的断线是最容易的
否则,可以执行以下操作:
<xsl:strip-space elements="*"/>
还要将多个空间规格化为一个空间:
<xsl:value-of select="normalize-space(description)"/>
最后一种方法是发出显式空格和换行符。除了删除前导/尾随空格外,还可能需要添加以下行:
<xsl:output method="text" indent="no" />
当输出方法为istext时,indent没有任何意义。感谢您的回复。第一个建议产生的输出与之前的空行和空格完全相同。第二个建议删除了值之间的所有空行和空格,但创建了一个包含XML开发人员指南内容的文件。我没有尝试最后一个建议,因为我不确定它是否适用于这里。如果不从根目录遍历树,XSLT如何工作?您正在运行标识转换模板吗?
<xsl:value-of select="normalize-space(description)"/>
<xsl:output method="text" indent="no" />