我刚刚开始学习 XML 和 XSLT,并且有一个关于 Xpath 的快速问题。
这是 XML 代码:
<root>
<shop>
<person>
<employee>
<name> Alexis </name>
<role> Manager </role>
<task> Sales </task>
</employee>
</person>
</shop>
<person>
<employee>
<role> Supervisor </role>
<name> Blake </name>
<task> Control </task>
</employee>
</person>
</root>
这是 XSLT 代码:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root">
<html><head></head>
<body><xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="shop">
<xsl:apply-templates select="/root/*/*"/>
</xsl:template>
<xsl:template match="employee">
<u> <xsl:apply-templates select="name"/> </u>
(Task: <xsl:apply-templates select="task"/>)
<br></br>
</xsl:template>
<xsl:template match="person2">
<xsl:apply-templates />
</xsl:template>
</xsl:stylesheet>
输出是:
Alexis (Task: Sales )
Blake (Task: Control )
Blake (Task: Control )
我不明白为什么最后一部分是重复的?我知道这是由于 XSLT 代码的这一部分:
<xsl:apply-templates select="/root/*/*"/>
但这只是因为我在摆弄代码并在 Firefox 中显示它。我不明白为什么。
据我了解,它正在选择“root”的所有孙元素,如下所示:
根/商店/人
但为什么亚历克西斯没有重复呢?只有布莱克重复了……