【问题标题】:XSLT 1 Distinct select on ancestorsXSLT 1 对祖先的不同选择
【发布时间】:2011-05-03 04:10:55
【问题描述】:

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

/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>

我想返回的是不同作者的列表。

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

这比较棘手,因为有多个作者的多本书。

【问题讨论】:

标签: xml xpath xslt-1.0


【解决方案1】:

按照 Robert 的 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>

【讨论】:

  • 太棒了,谢谢你的帮助,我刚下班。我有一种感觉,每本书只会返回唯一的作家名单,而不是作为书籍的集合。谢谢,通过 XSLT 学到了一些新东西。
  • 要获得相同的每本书,请将preceding 替换为preceding-sibling
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 2015-02-27
  • 2011-02-21
  • 1970-01-01
相关资源
最近更新 更多