XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
- XSLT Help and Discussion (7625)
-> - XSL-fo and how to line feed th... (1)
-> + Houston we have a problem (2)
-> + XSL-FO PDF generation (2)
-> + StylusStudio - pick XSLT 1.0 b... (6)
-> - Stylus Studio 2010 debugging f... (1)
-> - Drop down menu List / Option M... (1)
-> - XML transformation using Java ... (1)
-> + i can't to find XSLT editor in... (2)
-> - Copy xml input as value of an ... (1)
-> - Remove Name space from the Tab... (1)
-> - CGI formatted URL with name/va... (1)
-> - Problem with counting (1)
-> + for-each loop is only returnin... (3)
-> - sort date but some dates may b... (1)
-> - Entity Conversion (1)
-> - How can I build an xml convert... (1)
-> + Little Help (2)
-> + how do I merge nodes to one sc... (2)
-> - beginner help xslt and xpath (1)
-> - Convert XML Feed to CSV/SQL/XL... (1)
-> - Working with text node. (1)
-> - No Topic (1)
-> - API for XSLT Converter for .NE... (1)
-> - Getting started (1)
-> + saxon sql extensions - mysql a... (2)
-> - How do I copy and create new e... (1)
-> + substring-before and sums (3)
-> + Parsing special characters in ... (2)
-> + Schema - Require attribute in ... (2)
-> - Edit existing XSL files when n... (1)
-> + How can I use one single XSLT ... (2)
-> - Default selection of value in ... (1)
-> - Problem with watermark in pdf ... (1)
-> + XSLT Parameter Values dialog n... (3)
-> + Value of File Name is not acce... (10)
-> - Need help with a complex table... (1)
-> - How to replace all nordic char... (1)
-> - XSLT java heap space error wit... (1)
-> - Table Overflow to next page (1)
-> - Using XSLT 2.0 to define custo... (1)
-> - "standalone" attribute and xs... (1)
-> + Standardizing IP addresses (2)
-> + Programmatically changing page... (6)
-> + Can Stylus generate XSLT if so... (5)
-> + Extraction based on NODE Name. (2)
-> + NO XSLT:WYSIWYG (2)
-> + determine condition at run tim... (2)
-> - How to reduce top margin in ev... (1)
-> + need help on xsl looping (4)
-> - Convert Symbol to Element (1)
-> + Separator -only- between field... (3)
-> + DocBook (9)
-> + First Occurance of Alphabet (2)
-> + XSL:Key and Document (2)
-> + Excel Macro using XSLT (2)
-> + Add missing element and attrib... (2)
-> + XSL: Stop Count at First Match (2)
-> + XSD to EDI (4)
-> + How to access data from nested... (2)
-> + Simple division of XML file (2)
-> - XML to Flat File (1)
-> + Dispalying data whith xsl:for ... (3)
-> - distinct nodes - into 3 column... (1)
-> + Newbie at XML (2)
-> + XSL Not Working (3)
-> + to draw table using xsl (2)
-> + Base64 decoder (5)
-> + How to create a hidden sheet u... (3)
-> + XML Reports (2)
-> + Copying image files from one d... (2)
-> + XML conversion to RSS (2)
-> + Inserting Image (2)
-> + Xml to Pdf using Xsl (2)
-> + Using a parameter (or similar)... (2)
-> + How to avoid creating empty xm... (2)
-> + how to read txt files in xml (2)
-> + Limit records to 4 per page. P... (4)
-> + XSLT Mapping Based on JDK5 (2)
-> + XML Mappin (2)
-> + Format Datetime with xslt (3)
-> + Cell border missing (2)
-> - XSL: Key (not matches) (5)
-> ->XSL: Key (not matches)
-> ->XSL: Key (not matches)
-> ->XSL: Key (not matches)
-> ->XSL: Key (not matches)
-> + Loop through each char in stri... (2)
-> + What is the best way to sum va... (3)
-> + xslt sort help (2)
-> + getting the count (2)
-> + XSL dynamic variables (5)
-> + XSL:Key use (3)
-> + Help With Updating Attributes ... (8)
-> + GETTING COUNT AND POSITION usi... (3)
-> - Hi Everyone !! (1)
-> + Graph Traversal (Keep track of... (2)
-> + XSL IF with sum (2)
-> + Param not incrementing (2)
-> + Iterating through value tags (3)
-> + URGENT :::: Remove the name sp... (2)
-> + Pass new param values to ASP O... (2)
-> + Detect Browser Version in XSL (2)
-> + xslt result-document (2)
-> + Unique nodes based on two attr... (3)
-- Previous [181-200] [201-220] [221-240] Next
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
James DelaneySubject: XSL: Key (not matches)
Author: James Delaney
Date: 25 Aug 2009 12:53 PM
Hello all,

I'm running some keys to give me matching results of IDs that have repeated presence, then to calcuate some of their elements.

While I can match keys to documents, I can not get a list of those IDs that did not match up. Here's a code snip:



<xsl:key name="test" match="Census/Fall2008/Student[Classification='trad undergrad' and @AdmitTerm='Fall Semester 2008']/SAT1[@type='Verbal']" use="../@Id"/>


<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">


<xsl:template match="Census">

<html>
<body>



<h3> Orginial SAT Verbal Avg. Score</h3>
<xsl:variable name="Org_Sat_Sum">
<xsl:value-of select="format-number(sum(Fall2008/Student[Classification='trad undergrad' and @AdmitTerm='Fall Semester 2008']/SAT1[@type='Verbal']/Score),'###.##')"/>
</xsl:variable>

<xsl:variable name="Org_Sat_Count">
<xsl:value-of select="format-number(count(Fall2008/Student[Classification='trad undergrad' and @AdmitTerm='Fall Semester 2008']/SAT1[@type='Verbal']/Score),'###.##')"/>
</xsl:variable>


Verbal Sum: <xsl:value-of select="$Org_Sat_Sum"/><br/>
Verbal Count: <xsl:value-of select="$Org_Sat_Count"/><br/>

Avg. Verbal Score: <xsl:value-of select="format-number(($Org_Sat_Sum div $Org_Sat_Count),'###.##')"/> <br/><br/>



<h3> Returning SAT Verbal Avg. Score</h3>
<xsl:variable name="Returning_Sat_Sum">
<xsl:value-of select="sum(key('test', ./Spring2009/Student/@Id))"/>
</xsl:variable>

<xsl:variable name="Returning_Sat_Count">
<xsl:value-of select="count(key('test', ./Spring2009/Student/@Id))"/>
</xsl:variable>


<br/>
Verbal Sum: <xsl:value-of select="$Returning_Sat_Sum"/>
<br/>
Verbal Count: <xsl:value-of select="$Returning_Sat_Count"/>
<br/>
Avg. Verbal Score: <xsl:value-of select="format-number(($Returning_Sat_Sum div $Returning_Sat_Count),'###.##')"/> <br/><br/>
<br/>

</body>
</html>
</xsl:template>

</xsl:stylesheet>
-------------------------------------




This is working correctly as it properly applies the key to presence in the other Spring2009 path. 10 records are NOT matched, as they were only present in Fall2008, and not Spring2009. These not matched records are important to know and I would like to perform similar calculations on them.

How can I perform a "reverse key" or apply a method similar? I'm thinking the answer might be within apply-template usage, but can't get it down correctly. Here's an example of at least the thought process behind what I am trying to achieve:

<xsl:value-of select="count(key('test', not(./Spring2009/Student/@Id)))"/>


Thanks!

Postnext
(Deleted User) Subject: XSL: Key (not matches)
Author: (Deleted User)
Date: 02 Sep 2009 12:25 PM
Hi James,
you can try building a key for

<xsl:key name="test2" match="Census/Spring2009/Student" use="@Id"/>

and then doing a

<xsl:value-of select="count(./Fall2008/Student[key('test2', @Id)=''])"/>

Alberto

Postnext
James DelaneySubject: XSL: Key (not matches)
Author: James Delaney
Date: 15 Sep 2009 12:59 PM
Hi Alberto,

As always, thanks for your help.

I went down this road earlier, however the list from Spring09 may include student ID's that have skipped a semester. Therefore their progression would not include the keyed semester. It would catch a lot of the key's "not matched", but not exactly.

Do you know of any other way that would give me the specific "not found in key"? Just as a template filter?


Best, James




>Hi James,
>you can try building a key for
>
><xsl:key name="test2"
>match="Census/Spring2009/Stude
>nt" use="@Id"/>
>
>and then doing a
>
><xsl:value-of
>select="count(./Fall2008/Stude
>nt[key('test2',
>@Id)=''])"/>
>
>Alberto

Postnext
(Deleted User) Subject: XSL: Key (not matches)
Author: (Deleted User)
Date: 16 Sep 2009 03:07 AM
Hi James,
I am not sure to understand your requirements; could you explain better which students you are interested in finding out?

Thanks,
Alberto

Posttop
James DelaneySubject: XSL: Key (not matches)
Author: James Delaney
Date: 16 Sep 2009 07:17 PM
Originally Posted: 16 Sep 2009 07:14 PM
Sure!

Here's a key:

<xsl:key name="TRADUG_F2008_Cohort_Verbal1" match="Census/Fall2008/Student[Classification='trad undergrad' and @AdmitTerm='Fall Semester 2008']/SAT1[@type='Verbal']" use="../@Id"/>

This key captures all students who fit into this specific Xpath condition (SAT1 type of Verbal, fall admit, and trad undergrad) within the Fall2008 tree.

I then apply this key to the Spring2009 tree:

<xsl:value-of select="sum(key('TRADUG_F2008_Cohort_Verbal1', ./Spring2009/Student[Classification='trad undergrad']/@Id))"/>

This returns to me their total sum of SAT scores, which I then average with the same value-of, but a count, instead of a sum for an average.

However, this only tells me data of students who were in Fall 2008 (my key) and those that are still in Spring 2009 (my value of).

But it doesn't tell me who was NOT matched from the original Fall 2008 Key in Spring 2009 tree. This is information that I need.

--------------------------

Here's an example:

XML file:

<Census>
<Fall2008>
<Student ID='1'>A</Student>
<Classification>trad undergrad</Classification>
<Student ID='2'>A</Student>
<Classification>trad undergrad</Classification>
<Student ID='3'>B</Student>
<Student ID='4'>C</Student>
</Fall2008>
<Spring2009>
<Student ID='1'>A</Student>
<Classification>trad undergrad</Classification>
<Student ID='3'>B</Student>
<Student ID='4'>C</Student>
<Student ID='5'>A</Student>
</Spring2009>
</Census>


XSL code:

<xsl:key name="Fall08_A_Only" match="Census/Fall2008/Student[Classification='trad undergrad']" use="@ID"/>


<xsl:value-of select="sum(key('Fall08_A_Only', ./Spring2009/Student[Classification='trad undergrad']/@ID))"/>



Doing this key, and this matchup will only match in Spring2009 the: <Student ID='1'>A<Student>

and not the
<Student ID='2'>A</Student>


The student A, with an ID of 2 has left the school. He's gone. But I want to know his data. They Fall_08 Key put his ID in memory while searching fall 09 for his presence, but when he's not found, he's not returned (correctly). But I would love to see those that are NOT matched as well, by using the key itself to determine the population that I can perform an output on.

Pretty much I am trying to find characteristics of students who return, as well as those that don't return. This has to be done by unique student ID's as students will come and go randomly throughout their life here. This is why I can't do a backwards key (from spring to fall) as new students might have skipped a semester.


Does this make sense? :)

Thanks again for all your help as always Alberto. This has been a critical resource in my XSLT/XML learning.


>Hi James,
>I am not sure to understand
>your requirements; could you
>explain better which students
>you are interested in finding
>out?
>
>Thanks,
>Alberto

   
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.