2

ハッシュ(#) "%0A%09%09#2"の前に奇妙な文字が追加されています。EclipseとJavaプロセッサXalan2.7.1を使用しています。

    <xsl:for-each select="fps-photo-atlas/portion">
<a>
<xsl:attribute name="href" >
    #<xsl:value-of select="normalize-space(food-number)" />
</xsl:attribute>
<xsl:value-of select="food-description" />
</a>
</xsl:for-each>

推奨される出力は...

 <body><a href="#1">Rice </a></body>

実際の出力は..

 <body><a href="%0A%09%09#1">Rice </a></body>

解決策を修正しました(Ignに感謝)

<xsl:attribute name="href" >#<xsl:value-of select="normalize-space(food-number)" /></xsl:attribute>
4

1 に答える 1

2

次のいずれかに該当しない限り、スタイルシートのテキストノードの空白は削除されます。

  • 'xsl:text'要素内に直接あります
  • 空白以外の文字が含まれています
  • 'xml:space'属性を使用して保持されます

不要な空白は#文字と同じテキストノードにあるため、保持されます。

不要な空白を除外する方法はいくつかあります。

'xsl:attribute'の代わりに属性値テンプレートを使用してください。

<a href="#{normalize-space(food-number)}">
    <xsl:value-of select="food-description" />
</a>

#文字を'xsl:text'要素に移動します。

<a>
    <xsl:attribute name="href" >
        <xsl:text>#</xsl:text>
        <xsl:value-of select="normalize-space(food-number)" />
    </xsl:attribute>
    <xsl:value-of select="food-description" />
</a>

#文字を「value-of」式に移動します。

<a>
    <xsl:attribute name="href" >
        <xsl:value-of select="concat('#',normalize-space(food-number))" />
    </xsl:attribute>
    <xsl:value-of select="food-description" />
</a>

スタイルシートから空白を削除します。

<a>
    <xsl:attribute name="href" >#<xsl:value-of select="normalize-space(food-number)></xsl:attribute>
    <xsl:value-of select="food-description" />
</a>
于 2012-05-02T01:36:19.003 に答える