我想要使用XSLT 1.0解析HTML文件
该文件的格式为<file name="/var/application-data/..../application/controllers/cgu.php" />
我想要它
<file filename="cgu.php" folderName="controller/"/>
我设法使用<xsl:value-of select="substring-before(substring(@name, 85), '/')"/>
执行此操作
,但我希望它适用于所有路径。
是否可以计算“/”的出现次数以仅检索路径的最后部分?
我使用递归模板只检索文件名,但我也需要文件夹名称
<xsl:template name="substring-after-last">
<xsl:param name="string"/>
<xsl:choose>
<xsl:when test="contains($string, '/')">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="string" select="substring-after($string, '/')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
答案 0 :(得分:0)
一种方法是将第一次调用的结果(获取文件名)存储在变量中,然后再次调用模板,但def main(_):
# flag validity checks
with slim.arg_scope([slim.variable], device='/cpu:0'): # Run evaluation on the CPUs
# all my code that was previously in main()
属性被截断长度文件名(以便文件夹名称现在是最后一项)。
name
或者,如果您的进程支持它,您可以使用EXSLT的<xsl:template match="file">
<xsl:variable name="fileName">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="string" select="@name" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="folderName">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="string" select="substring(@name, 1, string-length(@name) - string-length($fileName) - 1)" />
</xsl:call-template>
</xsl:variable>
<file filename="{$fileName}" folderName="{$folderName}/"/>
</xsl:template>
函数
tokenize