1

我已经在互联网上搜索以发现这种在 xml 元素中查找行数的方法。:

<xsl:if test="string-length(@Example) - string-length(translate(@Example, '&#xa;', '')) &lt; 10"> 

在上面的示例中,@Example 是计算行数的元素。然而,我不喜欢这段代码,因为它会自动变成这样:

    <xsl:if test="string-length(@Example) - string-length(translate(@Example, ' 
', '')) &lt; 10">

你看,代码&#xa;变成了一个文字空行(它代表但我不希望它是一个空行)。以上对我来说似乎是不好的编码风格(如果不是,请告诉我),所以我想要另一种方法来查找@Example 中的行数。谢谢你。

4

2 回答 2

0

Just for clarification of my previous answer ( https://stackoverflow.com/questions/3366181/sharepoint-designer-keeps-turning-xa-within-source-code-into-literal-new-line )

Running this stylesheet (same as Dimitre):

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

 <xsl:variable name="vNL" select="'&#xA;'"/>

 <xsl:template match="xsl:value-of">
  <xsl:value-of select=
    "string-length(@select)
    -
     string-length(translate(@select, $vNL, ''))"/>
 </xsl:template>
</xsl:stylesheet>

With itself as input, output:

0

It only works with input like this:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

 <xsl:variable name="vNL" select="'&#xA;'"/>

 <xsl:template match="xsl:value-of">
  <xsl:value-of select=
    "string-length(@select)&#xA;
    -&#xA;
     string-length(translate(@select, $vNL, ''))"/>
 </xsl:template>
</xsl:stylesheet>

Output:

2
于 2010-07-31T21:31:12.583 回答
0

这种风格可能更接近你的喜好

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:variable name="vNL" select="'&#xA;'"/>

 <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-07-30T20:00:57.167 回答