AW: [xsl] XPath question concerning distinct-values()

Subject: AW: [xsl] XPath question concerning distinct-values()
From: "Szabo, Patrick \(LNG-VIE\)" <patrick.szabo@xxxxxxxxxxxxx>
Date: Fri, 3 Aug 2012 13:26:39 +0200
Actually just checking for a preceding item with the same order-number would
probably suffice.

<xsl:template match="item">
 	<xsl:if test="not(preceding-sibling::item[order-number =
current/oder-number])">
		<xsl:value-of select="concat(order-number, ' ', price)">
	</xsl:if>
</xsl:template>


. . . . . . . . . . . . . . . . . . . . . . . . . .
Developer Patrick Szabo
 Developer
LexisNexis
A-1030 Wien, Marxergasse 25

mailto:patrick.szabo@xxxxxxxxxxxxx
Tel.: +43 1 53452 1573
Fax: +43 1 534 52 146


-----UrsprC<ngliche Nachricht-----

Von: Szabo, Patrick (LNG-VIE) [mailto:patrick.szabo@xxxxxxxxxxxxx]
Gesendet: Freitag, 03. August 2012 13:22
An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: AW: [xsl] XPath question concerning distinct-values()

Hi,

You could still use distinct-values and then "iterate" those values and output
the desire values from the first item you find with the corresponding
order-number.

Something like

<xsl:for-each select="distinct-values(/pricelist/item) ">
	<xsl:value-of
select="concat(/pricelist/item/order-number[parent::item[order-number=.][1]],
' ', /pricelist/item/price[parent::item[order-number=.][1]])">
</xsl:for-each>

There's probably a more elegant way to do it tough.

Best regards


. . . . . . . . . . . . . . . . . . . . . . . . . .
Developer Patrick Szabo
 Developer
LexisNexis
A-1030 Wien, Marxergasse 25

mailto:patrick.szabo@xxxxxxxxxxxxx
Tel.: +43 1 53452 1573
Fax: +43 1 534 52 146


-----UrsprC<ngliche Nachricht-----

Von: Thorsten [mailto:xsl-list@xxxxxxxxxxxxx]
Gesendet: Freitag, 03. August 2012 13:14
An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Betreff: [xsl] XPath question concerning distinct-values()

Hello,

I have a terrible SAP export that looks (simplified) like this:

<pricelist>
   <item>
      <title>Lorem Ipsum Dolor Sit Amet</title>
      <order-number>XY7020280901</order-number>
      <price>12.00</price>
      <unit>50</unit>
   </item>
   <item>
      <title>Some Title</title>
      <order-number>XY9010200901</order-number>
      <price>19.00</price>
      <unit>50</unit>
   </item>
   <item>
      <title>The Same Item With A Different Title</title>
      <order-number>XY9010200901</order-number>
      <price>19.00</price>
      <unit>50</unit>
   </item>
   <item>
      <title>Lorem Ipsum Dolor</title>
      <order-number>XY7010220201</order-number>
      <price>18.00</price>
      <unit>50</unit>
   </item>
</pricelist>

I want to select each <item> with different <order-number>. Simply
distinct-values(/pricelist/item) doesn't work because the <title> of item[2]
and
item[3] are different.

My output should look like this:
XY7020280901  12.00
XY9010200901  19.00
XY7010220201  18.00

I'm using XSLT2.0 with Saxon 9.2 PE.

Any ideas?

Many thanks in advance.

Kind regards
Thorsten

Current Thread