我在互联网上搜寻过这种查找xml元素中行数的方法:
<xsl:if test="string-length(@Example) - string-length(translate(@Example, '
', '')) < 10"> 在上面的示例中,@Example是计算行数的元素。然而,我不喜欢这段代码,因为它会自动变成这样:
<xsl:if test="string-length(@Example) - string-length(translate(@Example, '
', '')) < 10">您可以看到,代码
被转换为文字空白行(它表示空白行,但我不希望它成为空白行)。上面的代码风格对我来说似乎不好(如果不是,请告诉我),所以我想用另一种方法来找到@Example中的行数。谢谢。
发布于 2010-07-31 04:00:57
这个风格可能更接近你的preferences
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="vNL" select="'
'"/>
<xsl:template match="t">
<xsl:value-of select=
"string-length(@Example)
-
string-length(translate(@Example, $vNL, ''))"/>
</xsl:template>
</xsl:stylesheet>NL常量保存在变量中,引用此变量不会导致编辑器显示新行。
即使是 $vNL 声明也可以解决这个问题--前提是这是一个全局<xsl:param>,并且值是由转换的外部调用者提供的。
发布于 2010-08-01 05:31:13
只是为了澄清我之前的回答( https://stackoverflow.com/questions/3366181/sharepoint-designer-keeps-turning-xa-within-source-code-into-literal-new-line )
运行此样式表(与Dimitre相同):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vNL" select="'
'"/>
<xsl:template match="xsl:value-of">
<xsl:value-of select=
"string-length(@select)
-
string-length(translate(@select, $vNL, ''))"/>
</xsl:template>
</xsl:stylesheet>以自身为输入,输出:
0它只适用于这样的输入:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="vNL" select="'
'"/>
<xsl:template match="xsl:value-of">
<xsl:value-of select=
"string-length(@select)

-

string-length(translate(@select, $vNL, ''))"/>
</xsl:template>
</xsl:stylesheet>输出:
2https://stackoverflow.com/questions/3373383
复制相似问题