如何使用 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>
我想从作为 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>