Subject: [xsl] Seek XPath 2.0 expression for this: Are there any book titles with more than one binding? From: "Costello, Roger L. costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 2 May 2019 12:55:38 -0000 |
Hello XPath experts! At the bottom of this message is my XML document. I need an XPath 2.0 expression that returns the result of this query: Are there any book titles with more than one binding? If yes, then show the first book for each binding. For the below XML document, the query should return these two books: <Book> <Author>Sally Smith</Author> <Title>XYZ</Title> <Binding>hardcover</Binding> <Count>1</Count> <Description>lo lo lo ..</Description> </Book> <Book> <Author>Sally Smith</Author> <Title>XYZ</Title> <Binding>softcover</Binding> <Count>1</Count> <Description>do do do ..</Description> </Book> Notice that the two books have the same author and title but different binding (hardcover versus softcover). This XPath 2.0 expression seems to work: for $i in /Bookstore/BookTitle/Book[1], $j in /Bookstore/BookTitle/Book[1] return if (($i ne $j) and ($i/Author eq $j/Author) and ($i/Title eq $j/Title) and ($i/Binding ne $j/Binding) and ($i = $j/preceding::Book)) then ($i, $j) else () That expression seems awfully complicated. Is there a simpler expression? If there isn't a simpler expression, then do you see anything missing in the expression (i.e., something that the expression doesn't take into consideration)? /Roger <Bookstore> <BookTitle> <Book> <Author>John Doe</Author> <Title>ABC</Title> <Binding>hardcover</Binding> <Count>1</Count> <Description>da da da ..</Description> </Book> <Book> <Author>John Doe</Author> <Title>ABC</Title> <Binding>hardcover</Binding> <Count>2</Count> <Description>za za za ..</Description> </Book> </BookTitle> <BookTitle> <Book> <Author>John Doe</Author> <Title>Foo</Title> <Binding>softcover</Binding> <Count>1</Count> <Description>na na na ..</Description> </Book> </BookTitle> <BookTitle> <Book> <Author>Sally Smith</Author> <Title>XYZ</Title> <Binding>hardcover</Binding> <Count>1</Count> <Description>lo lo lo ..</Description> </Book> <Book> <Author>Sally Smith</Author> <Title>XYZ</Title> <Binding>hardcover</Binding> <Count>2</Count> <Description>ho ho ho ..</Description> </Book> </BookTitle> <BookTitle> <Book> <Author>Sally Smith</Author> <Title>XYZ</Title> <Binding>softcover</Binding> <Count>1</Count> <Description>do do do ..</Description> </Book> </BookTitle> </Bookstore>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XSL-List Guidelines, Tommie Usdin btusdin | Thread | Re: [xsl] Seek XPath 2.0 expression, Martin Honnen martin |
[xsl] XSL-List Guidelines, Tommie Usdin btusdin | Date | Re: [xsl] Seek XPath 2.0 expression, Martin Honnen martin |
Month |