[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Find several different attribute values on many e
Thanks, I just copied the earlier for-each and didn't rework it.Sent from my Verizon, Samsung Galaxy smartphone -------- Original message --------From: "G. Ken Holman g.ken.holman@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: 2/8/24 2:19 PM (GMT-08:00) To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx, xsl <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Subject: Re: Find several different attribute values on many elements Yes, the error is apt because distinct-values() returns strings. I'm assuming this is because you don't want to process elements of duplicate string value.If you use <xsl:for-each-group group-by="." select="........"> then you will have control at the first element of each value and so your context will allow the <xsl:apply-templates/>I hope this helps.. . . . . KenAt 2024-02-08 22:12 +0000, dvint@xxxxxxxxx wrote:>I'm trying to process a collection of documents and extract the >distinct-values for several attributes. My first attempt was this >which is very slow>>B B B B B B B B <xsl:variable name="ditacollectionString">B B B B B B B B B B B B B B B B select="concat($srcPath, '?select=*.dita')"/>>>B B B B B B B B <xsl:variable name="xmlcollectionString">B B B B B B B B B B B B B B B B select="concat($srcPath, '?select=*.xml')"/>>>B B B B B B B B B B B B B B B B <xsl:for-each> >select="distinct-values(collection($ditacollectionString)//*/@audience)" >>B B B B B B B B B B B B B B B B B B B B B B B B <xsl:value-of select="concat(., ' ')"/>>B B B B B B B B B B B B B B B B </xsl:for-each>>B B B B B B B B B B B B B B B B <xsl:for-each> >select="distinct-values(collection($ditacollectionString)//*/@platform)" >>B B B B B B B B B B B B B B B B B B B B B B B B <xsl:value-of select="concat(., ' ')"/>>B B B B B B B B B B B B B B B B </xsl:for-each>>B B B B B B B B B B B B B B B B <xsl:for-each> >select="distinct-values(collection($ditacollectionString)//*/@props)" >>B B B B B B B B B B B B B B B B B B B B B B B B <xsl:value-of select="concat(., ' ')"/>>B B B B B B B B B B B B B B B B </xsl:for-each>>>I'm looking for a way to just make a single for-each loop and tried this>>B B B B B B B B B B B B B B B B B B B B B B B B <xsl:for-each> >select="distinct-values(collection($ditacollectionString)//element())" >>B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B <xsl:apply-templates mode="conditions"/>>>B B B B B B B B B B B B B B B B B B B B B B B B </xsl:for-each>>>B B B B B B B B <xsl:template match="@product | @audience " mode="conditions">>B B B B B B B B B B B B B B B B <xsl:value-of select="concat(., ' ')"/>>B B B B B B B B </xsl:template>>>But I get an error on the <xsl:apply-templates mode="conditions"/> indicating>The required item type of the context item is node(), but the >supplied expression {.} has item type xs:anyAtomicType.>>I also need to do this with both .dita and .xml files and I'm >planning on making 2 collections, is there a way to do one collection()?>--Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/s/ |Check our site for free XML, XSLT, XSL-FO and UBL developer resources |Streaming hands-on XSLT/XPath 2 training class @US$125 (5 hours free) |Essays (UBL, XML, etc.) http://www.linkedin.com/today/author/gkholman |
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|