0

テキスト ノード内の空白を削除する際に問題が発生しています。これは私が使用したコードですが、それでもスペースは入りません。

 <xsl:output indent="yes" method="xml"/> 
 <xsl:template match="/">

    <Address>  <xsl:apply-templates/> </Address>
 </xsl:template>

 <xsl:template match="Address/Rowinfo ">

     <xsl:copy>
        <xsl:copy-of select="LocatorDesignator"/>
        <xsl:copy-of select="LocatorName"/>

    </xsl:copy>
    </xsl:template>


 <xsl:template match="Address/Rowinfo/LocatorDesignator">

    <xsl:value-of select = "normalize-space(LocatorDesignator)"/> 
    <xsl:apply-templates/>
     </xsl:template>

 <xsl:template match="Address/Rowinfo/LocatorName">

    <xsl:value-of select = "normalize-space(LocatorName)"/> 
    <xsl:apply-templates/>
 </xsl:template>
 </xsl:stylesheet>

同じ結果が生成されます。これは、テキスト ノード内に空白があるサンプル xml データです。

<Address>
<Rowinfo>
<Locator>mr oga,    Ade  </Locator>
<LocatorDesignator>Dwelling(Part Of),   Null </LocatorDesignator>
</Rowinfo>

私の意図した出力は

   <Locator>mr oga, Ade</Locator>
  <LocatorDesignator>Dwelling(Part Of),Null</LocatorDesignator>
4

2 に答える 2

2

テキストノードから不要なスペースを削除するよく知られた方法は

normalize-space()

働き。

XMLドキュメントから空白テキストノードを削除するもう1つの補完的な方法は、XSLT命令です。

<xsl:strip-space elements="*"/>

他のより具体的なテンプレートと一致しないテキストノードを削除する3番目の方法は、次のテンプレートを使用することです。

<xsl:template match="text()"/>

これはより強力です(そして、賢明に使用されないと、出力で必要なテキストノードが「削除」される可能性があります)。

人々は通常、これら3つの方法を組み合わせて、不要な空白とテキストノードを削除します。

于 2012-08-22T12:06:51.267 に答える
0

テンプレートは使用されていません

それ以外の

<xsl:copy-of select="LocatorDesignator"/> 

行う

<xsl:apply-templates select="LocatorDesignator"/> 

または、JWileyが提案したように、翻訳でスペースを削除します

<xsl:template match="Address/Rowinfo/LocatorDesignator">  
    <xsl:value-of select = "translate(.,' ', '')"/>  
    <xsl:apply-templates/> 
</xsl:template> 

または、ローマに到達する方法が複数ある場合:

 <xsl:copy-of select="translate(LocatorDesignator,' ','')"/> 
于 2012-08-22T12:05:03.800 に答える