XSLT 1对祖先进行不同的选择

时间:2011-05-03 04:10:56

标签: xml xpath xslt-1.0

我在编写正确的语句时遇到了一些麻烦,无法返回唯一的值列表。以下路径只是一个例子,类似于我的困境。

/Root/Books/Book/Writers/Writer/Fullname

什么会返回唯一的“全名”列表,请记住,这里的假设是每本书都有多个作者,他们可能会参与多本书。

感谢您的帮助

以下是XML文档的示例

<Root>
    <Books>
        <Book>
            <Title>Book A</Title>
            <Writers>
                <Writer>Jon Smith</Writer>
                <Writer>Peter Smith</Writer>
            </Writers>
        </Book>
        <Book>
            <Title>Book B</Title>
            <Writers>
                <Writer>Jon Smith</Writer>
                <Writer>Peter Smith</Writer>
                <Writer>James Bloggs</Writer>
            </Writers>
        </Book>
        <Book>
            <Title>Book C</Title>
            <Writers>
                <Writer>Bob Peterson</Writer>
                <Writer>Peter Smith</Writer>
                <Writer>James Bloggs</Writer>
            </Writers>
        </Book>
    </Books>
</Root>

我想要返回的是不同作家的清单。

乔恩史密斯 彼得史密斯 詹姆斯博格斯 鲍勃彼得森。

这很棘手,因为有多本书有多个作家。

1 个答案:

答案 0 :(得分:0)

按照罗伯特的link进行分组处方的第一步:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <xsl:copy-of select='Root/Books/Book/Writers/Writer[not(preceding::Writer = .)]'/>
</xsl:template>

</xsl:stylesheet>