【发布时间】:2013-03-22 19:17:02
【问题描述】:
我有以下 XML 文件:
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="cars.xsd">
<manufacture id="1">
<make>Audi</make>
<classification>
<list mid="1">
<type>Sports</type>
</list>
<list mid="2">
<type>Compact</type>
</list>
<list mid="3">
<type>Compact</type>
</list>
</classification>
</manufacture>
<manufacture id="2">
<make>bmw</make>
<classification>
<list mid="1">
<type>Sports</type>
</list>
<list mid="2">
<type>Luxury</type>
</list>
<list mid="3">
<type>Luxury</type>
</list>
</classification>
</manufacture>
</document>
这是我当前的 XSL 代码:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output doctype-public="-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
doctype-system="http://www.wapforum.org/DTD/xhtml-mobile10.dtd"
method="xml" version="1.0"
omit-xml-declaration="yes"
indent="yes" encoding="UTF-8" media-type="text/html"/>
<xsl:template match="/">
<xsl:element name="html">
<xsl:element name="head">
<xsl:element name="title">Automotives</xsl:element>
</xsl:element>
<xsl:element name="body">
<xsl:element name="ul">
<xsl:attribute name="class">pageitem</xsl:attribute>
<xsl:for-each select="document/manufacture/classification/list">
<xsl:element name="li">
<xsl:attribute name="class">menu</xsl:attribute>
<xsl:element name="p">
<xsl:attribute name="class">name</xsl:attribute>
<xsl:element name="a">
<xsl:value-of select="type"/>
<xsl:element name="br"/>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
如何在不重复类型的情况下获得以下输出?
Sports
Compact
Luxury
我是 XSLT 的新手,我尝试过使用 generate-id(),如:Select once from duplicate XML info, display rest, and sort on a field
但这对我不起作用,因为我无法理解 generate-id() 代码。
【问题讨论】:
-
我认为您正在寻找的术语是 distinct 值,而不是 unique 值。正如蒂姆 C 所说。