如何使用XSL和XML显示链接(带有本地href地址),以便它成为可点击链接?
到目前为止我的XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Tools">
<xsl:if test='count(Item)>0'>
<h3>Tools</h3>
<ul>
<xsl:for-each select="Item">
<li>
<a><xsl:attribute name="href"><xsl:value-of select="@Location"/></xsl:attribute><xsl:value-of select="@Title"/></a>
</li>
</xsl:for-each>
</ul>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
我的XML:
<?xml version="1.0" encoding="UTF-8"?>
<Binaries ModuleName="Tools">
<Item Title="Tool1" Location="\\myFolder\myApps\Tool1.jpg"/>
<Item Title="Tool2" Location="\\myFolder\myApps\Tool2.jpg"/>
</Binaries>
目前的结果:
<a href="%5C%5CmyFolder%5CmyApps%5CTool1.jpg">Tool1</a>
应该呈现为
<a href="\\myFolder\myApps\Tool1.jpg">Tool1</a>
但相反,我的链接上缺少反斜杠,所以它不起作用。
我有很多像这样的XML文件,所以如果可能的话,只需更改XSLT中的代码即可。 谢谢你的任何想法!
答案 0 :(得分:1)
XSLT中的以下更改应保留@Location
的值。
<a href="{@Location}">
<xsl:value-of select="@Title" />
</a>
以下是完整的XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Binaries">
<xsl:if test='count(Item) > 0'>
<h3>Tools</h3>
<ul>
<xsl:for-each select="Item">
<li>
<a href="{@Location}">
<xsl:value-of select="@Title" />
</a>
</li>
</xsl:for-each>
</ul>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
应用于共享XML时,会产生下面的输出。
<h3>Tools</h3>
<ul>
<li>
<a href="\\myFolder\myApps\Tool1.jpg">Tool1</a>
</li>
<li>
<a href="\\myFolder\myApps\Tool2.jpg">Tool2</a>
</li>
</ul>