XSL で属性値の空白を保持できません。次のような XML があります。
<FUNCTION_CALL name="SUBSTR">
<ARGUMENTS>
<CONSTANT type="CHAR" value=" "/>
<CONSTANT type="NUMERIC" value="1"/>
<CONSTANT type="NUMERIC" value="8"/>
</ARGUMENTS>
</FUNCTION_CALL>
そして、私はレンダリングする必要があります:
SUBSTR(' ', 1, 8)
しかし、私は得ています
SUBSTR('', 1, 8)
私が持っているXSLは次のとおりです。
<xsl:template match="FUNCTION_CALL">
<xsl:value-of select="@name"/><xsl:apply-templates/>
</xsl:template>
<xsl:template match="FUNCTION_CALL[@ALIAS]">
<xsl:value-of select="@name"/><xsl:apply-templates/> AS <xsl:value-of select="@ALIAS"/>
</xsl:template>
<xsl:template match="ARGUMENTS">
(
<xsl:for-each select="COLUMN | CONSTANT">
<xsl:if test="position()>1">, </xsl:if>
<xsl:apply-templates select="."/>
</xsl:for-each>
)
</xsl:template>
<xsl:template match="CONSTANT[@type='CHAR']" xml:space="preserve">
'<xsl:value-of select="@value"/>'
</xsl:template>
xml:space="preserve"
(サンプル コードで) を試しました<xsl:preserve-space elements="CONSTANT" />
が、<xsl:output method="html" indent="yes"/>
スペースを含む出力をレンダリングできません。私は XSL と XSLT の比較的初心者であり、助けが必要です。