如何使用XML和XSLT显示本地链接?

时间:2017-09-06 15:34:20

标签: xml xslt

如何使用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中的代码即可。 谢谢你的任何想法!

1 个答案:

答案 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>