Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过XSLT创建前导空格和空行将XML转换为文本文件_Xml_Xslt 1.0 - Fatal编程技术网

通过XSLT创建前导空格和空行将XML转换为文本文件

通过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>

使用XSLT将最简单的文件转换为文本会插入前导空行、尾随空行和前导空格。在我需要对文本输出进行更多控制的情况下,如何避免这种情况

<?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" />