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)
-> + Use of before and after string (3) Sticky Topic
-> - How do I substitute element ty... (1)
-> + How does one add working days ... (4)
-> - Help, I have existing XLT and... (1)
-> + Need help on XSLT issue - (2)
-> + EDI to XML Conversion (7)
-> - XML To JSON Conversion using X... (1)
-> + Formatting Paragraphs to same ... (2)
-> - Grouping of records (1)
-> + Problems with xsd 1.1 (4)
-> + XML to HL7 mapping (3)
-> + XSLT 3 and Iterate (2)
-> + XSL-FO to PDF preview (3)
-> + java.lang.RuntimeException: Er... (2)
-> + Create Acroforms with Stylus X... (2)
-> + How to change XSLT parameter s... (3)
-> + how to change format of the da... (2)
-> + Search "Next 8 Results " doesn... (2)
-> - Support for Git (1)
-> + newbee (8)
-- [1-20] [21-40] [41-60] Next
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
Topic  
Postnext
Emil BerglindSubject: Retrieving all nodes where a certain attribute does not match.
Author: Emil Berglind
Date: 11 Dec 2007 05:02 PM
This is a two part question. First, here is the XML I'm working with:


<AmaxRec xmlns="http://Test.FlatFileSchema">
<Header xmlns="">
<RecType>HD</RecType>
<CarrierID>TESTCARRIER</CarrierID>
<SysDate>20071126</SysDate>
<SysTime>103408</SysTime>
<SenderID>7777419</SenderID>
<ReceiverID>1234</ReceiverID>
<FileVer>001</FileVer>
<RecNo>04175</RecNo>
</Header>
<Agency xmlns="">
<RecType>AY</RecType>
<AgencyID>SRP</AgencyID>
<Active>1</Active>
<AgencyName>TEST1</AgencyName>
</Agency>
<Agent xmlns="">
<RecType>AG</RecType>
<AgentID>00000000000000LDT001</AgentID>
<AgencyID>SRP</AgencyID>
<Active>1</Active>
<FirstName>TEST</FirstName>
<LastName>USER1</LastName>
<DOB>01011900</DOB>
<Phone>443-333-9999</Phone>
<Role>0</Role>
<Email>MARNG.NROLL@TEST.COM</Email>
</Agent>
<Agent xmlns="">
<RecType>AG</RecType>
<AgentID>00000000000000ABC</AgentID>
<AgencyID>SRP3</AgencyID>
<Active>1</Active>
<FirstName>TEST</FirstName>
<LastName>USER2</LastName>
<DOB>01011900</DOB>
<Phone>333-733-9999</Phone>
<Role>0</Role>
<Email>TEST.ENROLL@BEST.COM</Email>
</Agent>
</AmaxRec>

1: I've been executing simple xpath queries inside of an xslt transformation, and they are not coming out right. For example, I try to execute something as simple as //Agent[AgencyID != 'a'], and it always only gives the first Agent node. I can never get it to return everything. However, if I exceute this xpath query in a separate xquery window, it executes correctly.

2: I need an xpath query that will return all of the agents whose AgencyID's do not match any Agency's AgencyID's. I'm a bit new too xpath and xslt, so this has thrown me for a bit of a loop.

Any help would be greatly appreciated.

Thanks!

Postnext
Minollo I.Subject: Retrieving all nodes where a certain attribute does not match.
Author: Minollo I.
Date: 11 Dec 2007 09:21 PM
#1: This XSLT returns two nodes for me; maybe the problem is in the way you are consuming the result of the XPath expression in XSLT?
<xsl:for-each select="//Agent[AgencyID != 'a']">
<xsl:copy-of select="."/>
</xsl:for-each>

#2: Something like this? //Agent[AgencyID != //Agency/AgencyID]

Postnext
Emil BerglindSubject: Retrieving all nodes where a certain attribute does not match.
Author: Emil Berglind
Date: 12 Dec 2007 01:27 PM
Thanks! It was just the way I was displaying the results.

I just had <Test><xsl:value-of select="//Agent[AgencyID != //Agency/AgencyID]"></Test>. I'm kind of new to XSLT, so I didn't know exactly how I needed to execute the XPath query in there.

Postnext
Emil BerglindSubject: Retrieving all nodes where a certain attribute does not match.
Author: Emil Berglind
Date: 13 Dec 2007 04:48 PM
Ok, I have another question now. If I have multiple <Agency> elements, this xpath query seems to not work. When this is the case, every Agent record is always selected. Is there any way to write an xpath query that does something like "select all agents whos AgencyID's do not match a single Agency"?

Postnext
(Deleted User) Subject: Retrieving all nodes where a certain attribute does not match.
Author: (Deleted User)
Date: 14 Dec 2007 03:03 AM
Try reverting the check: //Agent[not(AgencyID = //Agency/AgencyID)]

Alberto

Posttop
Emil BerglindSubject: Retrieving all nodes where a certain attribute does not match.
Author: Emil Berglind
Date: 14 Dec 2007 09:13 AM
Awesome, thanks! That worked flawlessly. It's still a bit hard for me to get into the train of thought required for this xslt/xpath stuff. I'm so used to Object Oriented programming languages :-)

   
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.