有人能告诉我如何使用xslt代码读取文本文件中的行数。
提前致谢。
答案 0 :(得分:2)
使用此XPath 1.0表达式计算字符串$pText
中的行数:
1 + string-length() - string-length(translate($pText, '
', ''))
以下是使用此XPath表达式的完整XSLT 1.0转换:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:param name="pText" select="/*"/>
<xsl:template match="/*">
<xsl:value-of select=
"1 + string-length($pText) - string-length(translate($pText, '
', ''))"/>
</xsl:template>
</xsl:stylesheet>
对以下XML文档应用此转换时:
<text>aaaaa
bbbbb
ccccc</text>
产生了想要的正确结果:
3
请注意:您必须阅读C#程序中的文本文件,并将其文本作为参数传递给转换。
<强> II。 XSLT 2.0解决方案
几乎相同,但在XSLT 2.0中,可以使用其标准unparsed-text()
函数来读取文本文件:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:param name="pTextFileName" select="'file:///c:/temp/delete/delete.txt'"/>
<xsl:template match="/*">
<xsl:variable name="vText" select="unparsed-text($pTextFileName)"/>
"<xsl:value-of select="$vText"/>"
===================
<xsl:value-of select=
"1 + string-length($vText) - string-length(translate($vText, '
', ''))"/>
</xsl:template>
</xsl:stylesheet>
应用于任何XML文档(未使用),并且文件'c:/temp/delete/delete.txt'包含:
aaaaa
bbbbb
ccccc
产生了想要的正确结果:
3
答案 1 :(得分:0)
您可以轻松使用XSLT 2.0处理器:
尝试使用任何文本文件的XSL文件,以param textFile
的形式给出。它会计算文件中的行数。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
exclude-result-prefixes="xs xd"
version="2.0">
<xsl:output method="text"/>
<xsl:param name="textFile">file:/c:/style.css</xsl:param>
<xsl:template match="/">
<xsl:text>Count of line in file </xsl:text><xsl:value-of select="$textFile"></xsl:value-of>
<xsl:text>is </xsl:text><xsl:value-of select="$CountOfLines"/>
</xsl:template>
<xsl:variable name="CountOfLines">
<xsl:value-of select="count(tokenize(unparsed-text(resolve-uri($textFile,base-uri())),'[\r\n]+'))"/>
</xsl:variable>
</xsl:stylesheet>