我正在寻找一种方法来删除样式表中特定XSL模板中的所有换行符,不是整个样式表,只是模板。
我有一个呈现JSON代码块的模板。
例如,在我的XSLT样式表中,我有以下内容:
<xsl:template match="/">
<div>Content here..</div>
<xsl:call-template name="Foo">
<xsl:with-param name="Bar" select="Bar" />
</xsl:call-template>
<div>Content here..</div>
</xsl:template>
<xsl:template name="Foo">
<xsl:param name="Bar" />
<script type="text/javascript">
var json = {
data:[
<xsl:for-each select="$Bar">
{
ID:<xsl:value-of select="@Baz"/>
}
<xsl:if test="position() != last()">,</xsl:if>
</xsl:for-each>
]
};
</script>
</xsl:template>
这将呈现如下:
<div>Content here..</div>
<script type="text/javascript">
var json = {
data:[
{
ID:1
}
,
{
ID:2
}
,
{
ID:3
}
]
};
</script>
<div>Content here..</div>
我希望将其渲染为:
<div>Content here..</div>
<script type="text/javascript">var json = {data:[{ID:1},{ID:2},{ID:3}]};</script>
<div>Content here..</div>
这是否可行,而不必让我的XSL模板变得不可读?
答案 0 :(得分:1)
在xsl:text
元素中包装JAvaScript代码将帮助您获得所需的结果。
<script type="text/javascript">
<xsl:text>var json = {data:[</xsl:text>
<xsl:for-each select="$Bar">
<xsl:text>{ID:</xsl:text>
<xsl:value-of select="@Baz"/>
<xsl:text>}</xsl:text>
<xsl:if test="position() != last()">,</xsl:if>
</xsl:for-each>
<xsl:text>]};</xsl:text>
</script>
这不是最好的代码,但我认为它仍然可读。如果有效,请告诉我。