- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 XSL 编程的新手,我想这是一个简单的问题:
如何在没有路径的情况下获取文件名?
目前我的代码看起来像这样,我得到了整个路径:
结果.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<All_Results>
<Result>
<id>1</id>
<workid>144</workid>
<rank>100000000</rank>
<title>Test Dokument</title>
<author_multival>Test</author_multival>
<author>Test</author>
<size>34185</size>
<url>https://test.test.com/docs/globalit/Lists/Documents/Datumtest/Test.docx</url>
<urlEncoded>https%3A%2F%2Ftest%2Etest%2Ecom%2Fdocs%2Fglobalit%2FLists%2FDocuments%2FDatumtest%2FTest%2Edocx</urlEncoded>
<description></description>
<write>5/3/2013</write>
<sitename>https://test.test.com/docs/globalit/Lists/Documents/Datumtest</sitename>
<collapsingstatus>0</collapsingstatus>
<hithighlightedsummary>Noch mehr text Noch mehr text <ddd /> </hithighlightedsummary>
<hithighlightedproperties>
<HHTitle>Test Dokument</HHTitle>
<HHUrl>https://test.test.com/docs/globalit/Lists/Documents/Datumtest/Test.docx</HHUrl>
</hithighlightedproperties>
<contentclass>STS_ListItem_DocumentLibrary</contentclass>
<isdocument>True</isdocument>
<picturethumbnailurl></picturethumbnailurl>
<serverredirectedurl>https://test.test.com/docs/globalit/_layouts/WordViewer.aspx?id=/docs/globalit/Lists/Documents/Datumtest/Test.docx&DefaultItemOpen=1</serveedirectedurl>
<doclanguage>German</doclanguage>
<doctitle>Test</doctitle>
<docauthor>Team</docauthor>
<revisiondate>5/3/2013</revisiondate>
<filename>Test.docx</filename>
<fileextension>DOCX</fileextension>
<imageurl imageurldescription="Microsoft Word">/_layouts/images/icdocx.png</imageurl>
</Result>
</All_Results>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="TotalResults" />
<xsl:template match="NumberOfResults" />
<xsl:template name="DisplayString">
<xsl:param name="str" />
<xsl:if test='string-length($str) > 0'>
<xsl:value-of select="$str" />
</xsl:if>
</xsl:template>
<xsl:template name="HitHighlighting">
<xsl:param name="hh" />
<xsl:apply-templates select="$hh"/>
</xsl:template>
<xsl:template name="ResultPreviewToolTip">
<xsl:param name="contentclass" />
<xsl:param name="picturethumbnailurl" />
<xsl:param name="url" />
<xsl:param name="title" />
<xsl:param name="hithighlightedsummary" />
<xsl:param name="description" />
<xsl:param name="version" />
<xsl:choose>
<xsl:when test="$contentclass[. = 'STS_ListItem_PictureLibrary'] and $picturethumbnailurl[. != '']">
<div>
<a href="{$url}" title="{$title}">
<img src="{$picturethumbnailurl}" alt="" />
</a>
</div>
</xsl:when>
<xsl:when test="contains( $url, 'jpg' ) or contains( $url, 'jpeg' ) or contains( $url, 'gif' ) or contains( $url, 'JPG' ) or contains( $url, 'JPEG' ) or contains( $url, 'GIF' )">
<div>
<img src="/_layouts/AssetUploader.aspx?Size=Medium&ImageUrl={$url}" alt="" />
</div>
</xsl:when>
<xsl:otherwise>
<div>
<xsl:choose>
<xsl:when test="$hithighlightedsummary[. != '']">
<b>Preview:</b>
<br/>
<xsl:call-template name="HitHighlighting">
<xsl:with-param name="hh" select="$hithighlightedsummary" />
</xsl:call-template>
</xsl:when>
<xsl:when test="$description[. != '']">
<b>Preview:</b>
<br/>
<xsl:value-of select="$description"/>
</xsl:when>
<xsl:otherwise>
No preview available
</xsl:otherwise>
</xsl:choose>
<xsl:call-template name="DisplayString">
<xsl:with-param name="str" select="$version" />
<xsl:with-param name="text" select="'Version: '" />
<xsl:with-param name="stringcolor" select="'#808080'" />
</xsl:call-template>
</div >
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="Result">
<xsl:variable name="tdClass">
<xsl:if test="(position() mod 2 = 0)">
<xsl:value-of select="'even'" />
</xsl:if>
<xsl:if test="(position() mod 2 = 1)">
<xsl:value-of select="'odd'" />
</xsl:if>
</xsl:variable>
<tr>
<td class="{$tdClass}">
<a href="#" class="tooltip">
<img>
<xsl:attribute name="src">
<xsl:value-of select="imageurl"/>
</xsl:attribute>
</img>
<span>
<xsl:call-template name="ResultPreviewToolTip">
<xsl:with-param name="contentclass" select="contentclass" />
<xsl:with-param name="description" select="description" />
<xsl:with-param name="hithighlightedsummary" select="hithighlightedsummary" />
<xsl:with-param name="picturethumbnailurl" select="picturethumbnailurl" />
<xsl:with-param name="title" select="title" />
<xsl:with-param name="url" select="url" />
<xsl:with-param name="version" select="version" />
</xsl:call-template>
</span>
</a>
</td>
<td>
<a>
<xsl:attribute name="href">
<xsl:value-of select="url" disable-output-escaping="yes" />
</xsl:attribute>
<xsl:value-of select="filename"/>
</a>
</td>
<td class="{$tdClass}">
<a>
<xsl:attribute name="href">
<xsl:value-of select="url" disable-output-escaping="yes" />
</xsl:attribute>
<xsl:choose>
<xsl:when test="doctitle != ''">
<xsl:value-of select="doctitle"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="title"/>
</xsl:otherwise>
</xsl:choose>
</a>
</td>
<td class="{$tdClass}">
<xsl:choose>
<xsl:when test="docauthor != ''">
<xsl:value-of select="docauthor"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="author"/>
</xsl:otherwise>
</xsl:choose>
</td>
<td class="{$tdClass}">
<xsl:value-of select="revisiondate" />
</td>
<td class="{$tdClass}">
<xsl:value-of select="doclanguage"/>
</td>
<td class="{$tdClass}">
<a>
<xsl:attribute name="href">
<xsl:value-of select="sitename" disable-output-escaping="yes" />
</xsl:attribute>
<img src="/_layouts/images/breadcrumbbutton.png" style="border-style: none" />
</a>
<xsl:call-template name="ShowVersionHistory" />
</td>
</tr>
</xsl:template>
<xsl:template name="ShowVersionHistory">
<!-- First, encode Url -->
<xsl:variable name="EncodedUrl">
<xsl:value-of disable-output-escaping="yes" select="ddwrt:UrlEncode(url)" />
</xsl:variable>
<!-- does only work for office docuemnts -->
<xsl:if test="string-length(serverredirectedurl) > 0">
<!-- get web url from office web app link -->
<xsl:variable name="WebUrl">
<xsl:value-of select="substring-before(serverredirectedurl, '_layouts')"/>
</xsl:variable>
<!-- create link -->
<xsl:variable name="FinalLink">
<xsl:value-of select="$WebUrl"/>
<xsl:text>_layouts/Versions.aspx?FileName=</xsl:text>
<xsl:value-of select="$EncodedUrl"/>
</xsl:variable>
<a href="{$FinalLink}" target="_blank" Title="Version History">
<img src="/_layouts/images/versions.gif" style="border-style: none" />
</a>
</xsl:if>
</xsl:template>
<xsl:template match="/">
<table class="searchresult">
<tr>
<th width="18"></th>
<th>Filename</th>
<th>Title</th>
<th>Author</th>
<th>Revision Date</th>
<th>Language</th>
<th>Actions</th>
</tr>
<xsl:apply-templates />
</table>
</xsl:template>
</xsl:stylesheet>
<xsl:value-of select="substring-after-last($url, '/')" disable-output-escaping="yes" />
但出现错误。
最佳答案
如果您坚持使用 XSLT 1.0,您可以使用这样的递归模板:
样式表
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template name="substring-after-last">
<xsl:param name="string"/>
<xsl:param name="char"/>
<xsl:choose>
<xsl:when test="contains($string, $char)">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="string" select="substring-after($string, $char)"/>
<xsl:with-param name="char" select="$char"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="/">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="string" select="'/var/log/tomcat'"/>
<xsl:with-param name="char" select="'/'"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
tomcat
/
,则此模板可能不会执行您想要的操作。 ,因为它总是只返回最后一个
$char
之后的内容.换句话说,对于
/var/log/tomcat/
(与
/var/log/tomcat
不同,没有尾部正斜杠),此模板将返回一个空字符串。
substring-after-last
将上面的模板转换为您自己的代码,而不是:
<xsl:attribute name="href">
<xsl:value-of select="url" disable-output-escaping="yes" />
</xsl:attribute>
<xsl:attribute name="href">
<xsl:call-template name="substring-after-last">
<xsl:with-param name="string" select="url"/>
<xsl:with-param name="char" select="'/'"/>
</xsl:call-template>
</xsl:attribute>
关于xslt - XSL : Just the filename without the path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15248057/
我知道这可能看起来像一个愚蠢/新手问题,但我对 XSLT 还很陌生(尽管我开始接受它并了解它的功能)。 什么时候适合使用xsl:if,什么时候适合使用xsl:choose/xsl:when? 当我想要
在根据节点是否存在设置变量后,我尝试输出变量的文字字符串值。我认为条件检查逻辑是正确的。但它没有输出值... su
我目前正试图使用 XSL 将 XML 文档转换为 HTML。 XML 文档使用 namespace ,我对 XSL 并没有太多经验,更不用说 namespace 了。基本上我想做的就是抓取 s:t
你能否在嵌套的 xsl:when 中嵌套 xsl:if,例如:
我正在 W3Schools 上使用 XSLT 代码示例:https://www.w3schools.com/xml/xsl_client.asp 我有这部分代码在 IE 中使用基本的 xslt 处理.
我正在尝试从 XSLT 样式表动态生成 XSLT 文档。原则上这当然有效,但我没有让命名空间工作。我想让生成的 XSLT 元素以“xsl”前缀为前缀: 而不是 我玩过 xsl:element 的
我们客户的要求是提供带圆角的 PDF 表格。我只有 Apache FOP 处理器可供我使用,它不支持圆角属性。它也不支持 float ,因此无法向左和向右 float 圆形图像。 你对如何做到这一点有
我有一个关于 xsl 的问题。我有 1 个巨大的 xsl 文件(+4000 行 :p),我想将文件分成不同的部分。我使用 xsl 文件来映射 BizTalk 中的一些架构,如果我将它分成几部分,它的性
我的 FO 流程有问题,因为在一页上,标题显示在一页的末尾并在之后的页面上继续。如何向 title-element 添加属性,以便标题始终显示在同一页面上,这意味着:没有分页符。 谢谢! /丹尼 最佳
我想知道是否有人可以帮助我或指出正确的方向。我目前有从 XML 文件返回正确的元素有些麻烦。我只是尝试获取我拥有的大型 XML 文件的精简版本,以便输出另一个 XML 文件(不是很多教程都在使用的 H
我想动态创建具有动态名称的变量以供以后在我的转换中使用,但为此我需要动态生成 XSL,然后在同一脚本中运行它。 这只是我正在寻找的粗略伪代码示例。
我正在学习 XML 以及如何使用 XSL 文件。在 XSL 文件中,我发现了以下术语: xsl:template match="/" 这代表什么?我可以用什么代替 /?我可以编写 table 或任何其
是否可以将 xsl: 放到 XSL 样式表中的 XSL 标签? 例如,可以: 输入为: 编辑:样式表中包含 HTML 和 XML 节点。 谢谢,罗斯 最佳答案 实际上,您可以通过将 XSLT(“h
有什么办法不离开后第一 匹配但继续检查其他条件? 最佳答案 我相信这是一个不。正如规范所说: The content of the first, and only the first, xsl:whe
在构建 XSL 文档时,我遇到了以下问题。我想保留原文中的换行符,所以我设置了linefeed-treatment="preserve" .然而,这显然也意味着它保留了文本内容之外和实际 xml 元素
我有一个 XSL 样式表,我需要使用 xsl:function 添加一些自定义字符串操作。但是我在尝试找出在我的文档中放置该函数的位置时遇到了麻烦。 我的 XSL 简化看起来像这样,
我有以下 XML: Picture 1 Picture 2 Picture 3 虽然此 XSL 执行了预期的操作(输出第一张图片的属性):
我希望 column-count="2"只出现在页面的某些部分。 ]>
我正在为我的 XML 内容生成 xsl-fo 文档,然后将此内容传递给将生成 PDF 的第三方 DLL 之一。我需要以 45 度角显示测试。如何实现这一目标? 谢谢 最佳答案 我很确定您不能在纯 XS
在我的情况下,我必须在两个表格行之间提供高达 0.5cm 的空间。我怎样才能做到这一点。 代码:: 我用过了:
我是一名优秀的程序员,十分优秀!