改行

2017-05-08 6 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 

は、コンポーネント上の改行があると見ます名前、私は出力でその改行を削除したい。

私は正規化スペース関数を試しましたが、出力に変更はありません。上記の問題を解決する方法はありますか?

ありがとう、 ハリ。あなたが....

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

改行1を追加したので、

答えて

3

改行は、そこxsl:when>後に、テキスト「コンポーネント名」の前に1が存在しています。あなたはきれいにインデントされていると思うかもしれませんが、テキストノードに空白以外の文字が入っていると、先頭のスペースや改行を含むすべてのテキストが含まれます。

ソリューションは、改行は「空白のみ」テキストノードの一部であり、今は無視され、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="*"/>

を使用して試みることができます