【发布时间】:2021-05-08 15:59:07
【问题描述】:
我有 2 个用于法语和英语的 xml 文件来生成 HTML。我正在使用 xslt document() 函数访问英文 XML 的内容。
XML 1 法语
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<group-container>
<group-name>Comptes</group-name>
</group-container>
<group-container>
<group-name>Paiements</group-name>
</group-container>
<group-container>
<group-name>Cartes</group-name>
</group-container>
</Root>
XML 2 英语
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<group-container>
<group-name>Accounts</group-name>
</group-container>
<group-container>
<group-name>Payments</group-name>
</group-container>
<group-container>
<group-name>cards</group-name>
</group-container>
</Root>
我的 XSLT 是
<xsl:variable name="en-xml-analytics">
<xsl:value-of select="//path to XML 2 English "/>
</xsl:variable>
<xsl:template match="Root">
<div class="first-level-inner">
<xsl:apply-templates select="./group-container" mode="first-level" />
</div>
</xsl:template>
<xsl:template match="group-container" mode="first-level">
<div>
<span>
<xsl:for-each select="document($en-xml-analytics)/Root/group-container">
<xsl:attribute name="data-webanalytics">menunavigation.<xsl:value-of select="./group-name" />
</xsl:attribute>
</xsl:for-each>
<span>
<xsl:value-of select="group-name" />
</span>
</span>
</div>
</xsl:template>
预期输出
<div class="first-level-inner">
<div><span data-webanalytics="menunavigation.Accounts"><span>Comptes</span></span></div>
<div><span data-webanalytics="menunavigation.Payments"><span>Paiements</span></span></div>
<div><span data-webanalytics="menunavigation.cards"><span>Cartes</span></span></div>
</div>
如何从同一 <div> 内的两个 XML 文件中获取值
【问题讨论】:
-
根据
group-container在根元素中的位置,法语和英语值有何关联? -
究竟是哪个 XSLT 处理器?如今,对于 Saxon 10 和 XSLT 3,这对于
for-each-pair或xsl:merge来说似乎是一项不错的工作。 -
@MartinHonnen,是的,```group-container``的位置在法语和英语中完全一样,处理器是
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> -
这是您的 XSLT 代码,您使用哪个软件来运行该代码?
标签: xml xslt xslt-1.0 xslt-2.0