[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
On 08/02/2024 23:11, 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 <xsl:variable name="ditacollectionString"
B B B B B B B select="concat($srcPath, '?select=*.dita')"/>
B B B B <xsl:variable name="xmlcollectionString"
B B B B B B B select="concat($srcPath, '?select=*.xml')"/>
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 <xsl:value-of select="concat(., ' ')"/>
B B B B B B B </xsl:for-each>
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 <xsl:value-of select="concat(., ' ')"/>
B B B B B B B </xsl:for-each>
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 <xsl:value-of select="concat(., ' ')"/>
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 <xsl:for-each
select="distinct-values(collection($ditacollectionString)//element())" >
At this point you have created a sequence of (distinct) atomic values of
the contents of all elements in the collection so you are basically
dealing with strings (or other atomic values);
<xsl:apply-templates mode="conditions"/>
therefore doing an apply-templates without a select here, which then
defaults to try to process the child nodes of the context item (which is
not a node) doesn't work out.
B B B B B B B B B B B </xsl:for-each>
B B B B <xsl:template match="@product | @audience " mode="conditions">
B B B B B B B <xsl:value-of select="concat(., ' ')"/>
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()?
Is that Saxon Java or which XSLT processor?
|
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
RSS 2.0 |
|
Atom 0.3 |
|
|