删除两行之间的额外空间

时间:2015-09-03 06:20:28

标签: xml xslt filemaker

我有以下XSLT。

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dso="http://www.filemaker.com/fmpdsoresult"
exclude-result-prefixes="dso">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>  
<xsl:template match="/">    
    <xsl:for-each select="dso:FMPDSORESULT/dso:ROW">
        <record>
            <First_Name><xsl:value-of select="dso:First_Name"/></First_Name>
            <Last_Name><xsl:value-of select="dso:Last_Name"/></Last_Name>
            <Address><xsl:value-of select="dso:Address"/></Address>               
        </record>
    </xsl:for-each>   
</xsl:template>
</xsl:stylesheet>

它产生了以下输出

<?xml version="1.0" encoding="UTF-8"?>

<record>

  <First_Name>John</First_Name>

  <Last_Name>Thomas</Last_Name>

  <Address>Stuttgart</Address>

</record>

<record>

  <First_Name>Aanshi</First_Name>

  <Last_Name/>

 <Address>Stuttgart</Address>

此处如果数据不可用,那么它只显示结束标记。有没有办法在开始和结束标记之间显示空值。我想要这样的东西

<Address></Address>

另外,如何删除两行之间的空格?

预期产出

<?xml version="1.0" encoding="UTF-8"?>
<record>
  <First_Name>John</First_Name>
  <Last_Name>Thomas</Last_Name>
  <Address>Stuttgart</Address>
</record>
<record>
  <First_Name>Aanshi</First_Name>
  <Last_Name></Last_Name>
  <Address>Stuttgart</Address>
</record>

3 个答案:

答案 0 :(得分:0)

避免自动关闭标签的简单方法是插入注释:

<Address><xsl:value-of select="dso:Address"/><xsl:comment/></Address>
                                             ^^^^^^^^^^^^^^

这将在输出中插入一个空注释,但这不应该伤害任何东西。

另见this question

答案 1 :(得分:0)

尝试......

$ sudo mkdir MOUNT_POINT
$ sudo /usr/share/google/safe_format_and_mount -m "mkfs.ext4 -F" DISK_LOCATION MOUNT_POINT

答案 2 :(得分:0)

也许这是一个文件制作者错误。 OP应添加filemaker标记。我在http://filemakerhacks.com/2012/09/23/export-field-contents-as-utf-8/中阅读了一些内容,并在Ben Kreunen的一篇评论中找到了

&#34; 我最近有一个类似的问题,额外的空行,最终在XSLT文件上出现了问题。特别的解决方法是在输出方法中关闭缩进。&#34;

您是否尝试将输出缩进设置为&#34; no&#34;?

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>