Xml 如何从XSL转换中获得唯一值?

Xml 如何从XSL转换中获得唯一值?,xml,xpath,xslt,Xml,Xpath,Xslt,我有以下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">

我有以下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>
我是XSLT新手,我尝试过使用generate id,如下所示:


但是它对我不起作用,因为我无法理解生成id代码。

您提到了生成id,这意味着您可能已经阅读了这里的内容,这确实是您需要获得不同值的内容。当您对类型元素感兴趣时,首先要定义一个键,以便通过它们的值轻松查找这些元素

<xsl:key name="types" match="type" use="." />
当应用于XML时,将输出以下内容

Sports
Compact
Luxury

您提到了generateid,这意味着您可能已经阅读了这里的内容,这确实是您需要获得不同值的内容。当您对类型元素感兴趣时,首先要定义一个键,以便通过它们的值轻松查找这些元素

<xsl:key name="types" match="type" use="." />
当应用于XML时,将输出以下内容

Sports
Compact
Luxury

我认为你要寻找的术语是独特的价值观,而不是独特的价值观。正如Tim C所说,我认为你要寻找的术语是独特的价值观,而不是独特的价值观。正如蒂姆C所说,非常感谢。这是一个非常详细的解释,很容易理解。非常感谢。这是一个非常详细的解释,很容易理解。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="text" />
   <xsl:key name="types" match="type" use="." />

   <xsl:template match="/">
      <xsl:apply-templates select="//type[generate-id() = generate-id(key('types', .)[1])]" />
   </xsl:template>

    <xsl:template match="type">
      <xsl:value-of select="concat(., '&#10;')" />
   </xsl:template>
</xsl:stylesheet>
Sports
Compact
Luxury