断行

2017-05-08 21 views
1

我得到的XSLT HTML输出断行

我的XSLT换行符

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
> 
    <xsl:output method="html" indent="yes"/> 

    <xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
    </xsl:template> 

<xsl:template match="text()"> 
    <xsl:value-of select='normalize-space()'/> 
    </xsl:template> 

    <xsl:template match="//Page"> 
    <xsl:choose> 
     <xsl:when test="@id = 'mainscreen'"> 
     id = 'mainscreen', 
     page = true, 
     </xsl:when> 
     <xsl:otherwise>no mainscreen</xsl:otherwise> 
    </xsl:choose> 
    <xsl:choose> 
     <xsl:when test="@componentname = 'HRMSDPESS'"> 
     component name: <xsl:value-of select="@componentname"/> 
     </xsl:when> 
    </xsl:choose> 
    </xsl:template> 

</xsl:stylesheet> 

我的输出:

<?xml version="1.0" encoding="utf-8"?> 
     id = 'mainscreen', 
     page = true, 

     component name: HRMSDPESS 

这里看到上面有分量的换行符名称,我想要删除输出中的换行符。

我试过规范化空间函数,但输出没有变化,有没有其他解决上述问题的方法?

谢谢, 哈里。

回答

3

有一个换行符在那里,因为你已经添加了一个在....

<xsl:when test="@componentname = 'HRMSDPESS'"> 
    component name: <xsl:value-of select="@componentname"/> 
    </xsl:when> 

断行是xsl:when>后和文本“组件名称”前的一个。您可能会认为它的缩进很好,但如果文本节点中包含非空白字符,则会包含所有文本,包括前导空格和换行符。

的解决方法是换行文本xsl:text

<xsl:when test="@componentname = 'HRMSDPESS'"> 
    <xsl:text>component name: </xsl:text><xsl:value-of select="@componentname"/> 
    </xsl:when> 

这样,断行是一个“空白只有”文本节点的一部分,现在被忽视了。

请注意,您的问题表明您正在输出html,但您已将输出方法设置为“xml”。另外,你实际上不是真的输出html,而是文本。如果您输出html,则应该使用<br />标记作为换行符,因为浏览器会自动标准化空白。

1
<xsl:template match="//Page"> 
<xsl:choose> 
<xsl:when test="@id = 'mainscreen'"> 
    id = 'mainscreen', 
    page = true, 
</xsl:when> 
<xsl:when test="@componentname = 'HRMSDPESS'"> 
    <xsl:text>component name:</xsl:text> <xsl:value-of select="@componentname"/> 
</xsl:when> 
<xsl:otherwise>no mainscreen</xsl:otherwise> 
</xsl:choose> 
0

,或者你可以尝试使用

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
 
<xsl:strip-space elements="*"/>