【问题标题】:Remove extra space between two lines删除两行之间的多余空格
【发布时间】:2015-09-03 06:20:28
【问题描述】:

我有以下 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>

【问题讨论】:

  • 您确定这是一个 XSLT 问题,而不是 Windows 与 Linux、CRLF 与 LF 问题吗?对我来说,它看起来像第二个。 this link help 吗?
  • @torazaburo:是的,你是对的。我已经更新了。
  • remove space between two line 是什么意思?什么空间?
  • @SeanB.Durkin:我已经更新了问题。
  • 嗯?您要求为输出中的空元素提供 html 样式的打开和关闭标签(根据 Address 示例),但随后您自相矛盾,表明您想要一个空 Last_name 元素的自关闭标签。

标签: xml xslt filemaker


【解决方案1】:

避免自闭标签的一个简单解决方法是插入注释:

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

这将在输出中插入一个空注释,但这不会有任何影响。

另见this question

【讨论】:

    【解决方案2】:

    试试...

    <xsl:output method="html" indent="yes"/>
    

    【讨论】:

    • 感谢它的工作。你知道如何去除节点/线之间的空间吗?
    • 我无法重现您的结果。
    【解决方案3】:

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

    我最近遇到了一个类似的问题,即多余的空行,最终对 XSLT 文件提出了一个扭曲。特别的解决方法是关闭输出方法中的缩进。” p>

    您是否尝试将输出缩进设置为“否”?

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

    【讨论】:

    • 你能重现这个问题吗?如果是这样,哪个处理器,在哪个平台上?
    • 我没有注意到那里的 filemaker 命名空间,抱歉。
    • @JoelM.Lamsen:感谢您的回复。我将缩进设置为“否”。但它产生相同的输出。