我必须提交XML文件: language.xml 和 menu.xml 。默认情况下会加载第一个,第二个加载<xsl:param />
。
language.xml:
<?xml version="1.0" encoding="utf-8"?>
<language>
<header>
<menu>
<title>Title of example</title>
</menu>
<menu>
<title>Title of example 2</title>
</menu>
<menu>
<title>Title of example 3</title>
</menu>
</header>
</language>
menu.xml文件
<?xml version="1.0" encoding="utf-8"?>
<header>
<menu>
<a>/example</a>
</menu>
<menu>
<a>/example2</a>
</menu>
<menu>
<a>/example3</a>
</menu>
</header>
我需要将每个/语言/标题/菜单与每个/标题/菜单相匹配。位置是正确的,因此第一个/语言/标题/菜单与/ header / menu对应。
所以期望的输出将是:
<a href="/example">Title of example</a>
<a href="/example2">Title of example 2</a>
<a href="/example3">Title of example 3</a>
谢谢!
答案 0 :(得分:2)
使用匹配模板,您可以执行以下操作:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="localization" select="document('index.en.xml')" />
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<html>
<head>
<title>Test</title>
</head>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>
<xsl:template match="menu">
<a href="{a}">
<xsl:variable name="pos" select="position()" />
<xsl:value-of select="$localization/language/header/menu[$pos]/title"/>
</a>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
据我所知,你说文件应该根据它们作为XML子节点的位置进行链接。在这种情况下,您需要类似的东西:
<xsl:for-each select="menu">
<a href="{.}">
<xsl:variable name="position"><xsl:value-of select="position()"/></xsl:variable>
<xsl:for-each select="$param//menu[position() = $position]">
<xsl:value-of select="title"/>
</xsl:for-each>
</a>
</xsl:for-each>