如何使用 xsl 重定向到外部 url

How can I redirect to an external url using xsl

我想从作为 html 中 a 标签的 href 传递的亲戚 url 重定向到外部 url: 我有以下 xml 代码

  <links>
     <link id="faq" text="F.A.Q." url="en/faq/" external="true" />
     <link id="contactUs" text="Contacts" url="en/company/contacts/" external="true" />
     <link id="termsAndConditions" text="Terms and Conditions" url="en/terms/" external="true" />
  </links>

和以下 xslt 转换以获得 HTML:

            <a href="{@url}" title="{@text}" class="page__footer__nav__link">
                <xsl:if test="@external = 'true'">
                   <xsl:attribute name="target">_blank</xsl:attribute>
                </xsl:if>
                 <xsl:value-of select="@text" />
            </a>

HTML 一定是这样的:

<a href="domain/en/faq" target="_blank" />

对于三个锚标签

将域字符串存储在参数中并使用 concat() 生成结果 URL。

XSLT 样式表

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">

    <xsl:output method="html" encoding="UTF-8" indent="yes" />

    <xsl:param name="domain" select="'www.example.com/'"/>

    <xsl:template match="/links">
      <hmtl>
        <xsl:apply-templates/>
      </hmtl>
    </xsl:template>

    <xsl:template match="link">
        <a href="{concat($domain,@url)}" title="{@text}" class="page__footer__nav__link">
            <xsl:if test="@external = 'true'">
                <xsl:attribute name="target">_blank</xsl:attribute>
            </xsl:if>
            <xsl:value-of select="@text" />
        </a>
    </xsl:template>

</xsl:transform>

HTML输出

<hmtl>
   <a href="www.example.com/en/faq/" title="F.A.Q." class="page__footer__nav__link" target="_blank">F.A.Q.</a>
   <a href="www.example.com/en/company/contacts/" title="Contacts" class="page__footer__nav__link" target="_blank">Contacts</a>
   <a href="www.example.com/en/terms/" title="Terms and Conditions" class="page__footer__nav__link" target="_blank">Terms and Conditions</a>  
</hmtl>