Subject: RE: [xsl] Ways to simplify XSL, complex "select/filter criteria" From: J L <jinlii@xxxxxxxxxxx> Date: Thu, 7 Jan 2010 18:57:27 +0000 |
I tried the transformation in Altova. It complains about Error in XPath 2.0 expression Cast failed, invalid lexical value - '2005-09-19T00:00:00 ... ... 2010-09-19T00:00:00email1@xxxxxxxxxxxxxxxxxxx:00:00email2@xxxxxx' If I change '2005-09-19T00:00:00' to 2005-09-19. The same error. Do you know why? ---------------------------------------- > From: mike@xxxxxxxxxxxx > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Date: Fri, 18 Dec 2009 10:23:36 +0000 > Subject: RE: [xsl] Ways to simplify XSL, complex "select/filter criteria" > > > I don't think I fully understand the requirement, but it's certainly a case > where your code can be simplified by use of functions. For example you can > define this function > > > > > select="xs:dateTime($v/ns:startDateTime)"/> > > select="xs:dateTime($v/ns:endDateTime)"/> > > > > and this one > > > > > > > and then you can do things like > > > [exists(ns:validFor[f:applies-now(.)])]"/> > > Regards, > > Michael Kay > http://www.saxonica.com/ > http://twitter.com/michaelhkay > >> -----Original Message----- >> From: Stefan Fritz [mailto:sfritz.nospam@xxxxxx] >> Sent: 18 December 2009 10:07 >> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx >> Subject: [xsl] Ways to simplify XSL, complex "select/filter criteria" >> >> Hi all, >> >> first my environment: Saxon 8.9, XSL and Xpath 2.0, Java >> >> I have to transform a XML document which contains elements >> with the same name but different xs:type. >> In addition the elements contain an optional validFor element >> which defines a time period for the validity of the data. >> >> The rules to implement is: >> - select element by xsi type >> - select the valid (in time period) element >> - if no time period specified and multiple elements of the >> same type exist, take the first one >> >> I have to apply these rules in almost every value-of >> selection in my XSLT and therefore the XSLT became really a nightmare. >> I hope there is a solution to simplify this. I though about >> xsl:function, dynamic Xpath (saxon:evaluate,..) but couldn't >> get it to work. >> Any help more than appreciated! >> >> Thanks >> Stefan >> >> simplified XML and XSL: >> >> >> xsi:type="ns:Individual" >> xmlns:ns="http://myns" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >> >> >> 1800-01-01T00:00:00 >> >> >> >> >> >> 2005-09-19T00:00:00 >> >> >> >> ... >> >> >> ... >> >> >> >> 2010-09-19T00:00:00 >> >> email1@xxxxxx >> >> >> >> 2010-09-19T00:00:00 >> >> email2@xxxxxx >> >> >> >> >> >> >> >> xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >> xmlns:cdm="http://myns" >> xmlns:xs="http://www.w3.org/2001/XMLSchema" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >> >> >> >> >> select="/cdm:Individual/cdm:PartyPlays[contains(@xsi:type,'Emp >> loyee')][ >> if(string-length(cdm:validFor/cdm:startDateTime) gt 0 and >> string-length(cdm:validFor/cdm:endDateTime) gt 0) then >> (xs:dateTime(cdm:validFor/cdm:startDateTime) lt >> current-dateTime() and >> xs:dateTime(cdm:validFor/cdm:endDateTime)gt >> current-dateTime()) else >> if(string-length(cdm:validFor/cdm:startDateTime) gt 0) then >> (xs:dateTime(cdm:validFor/cdm:startDateTime) lt >> current-dateTime()) else >> if(string-length(cdm:validFor/cdm:endDateTime) gt 0) then ( >> xs:dateTime(cdm:validFor/cdm:endDateTime)gt current-dateTime()) else >> 1 >> ]/cdm:PartyRoleContactableVia[contains(@xsi:type,'EMailContact')][ >> if(string-length(cdm:validFor/cdm:startDateTime) gt 0 and >> string-length(cdm:validFor/cdm:endDateTime) gt 0) then >> (xs:dateTime(cdm:validFor/cdm:startDateTime) lt >> current-dateTime() and >> xs:dateTime(cdm:validFor/cdm:endDateTime)gt >> current-dateTime()) else >> if(string-length(cdm:validFor/cdm:startDateTime) gt 0) then >> (xs:dateTime(cdm:validFor/cdm:startDateTime) lt >> current-dateTime()) else >> if(string-length(cdm:validFor/cdm:endDateTime) gt 0) then ( >> xs:dateTime(cdm:validFor/cdm:endDateTime)gt current-dateTime()) else >> 1 >> ][1]/cdm:eMailAddress[1]"/> > _________________________________________________________________ Hotmail: Trusted email with powerful SPAM protection. http://clk.atdmt.com/GBL/go/196390707/direct/01/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How can I achieve correct, Frédéric Schwebel | Thread | RE: [xsl] Ways to simplify XSL, com, Michael Kay |
RE: [xsl] Number of elements with a, J L | Date | Re: [xsl] Re: Generate identifier, G. Ken Holman |
Month |