[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Using doc( ) to get a second input file

Subject: Re: Using doc( ) to get a second input file
From: "Imsieke, Gerrit, le-tex gerrit.imsieke@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 14 Apr 2015 21:18:48 -0000
Re:  Using doc( ) to get a second input file
Declare a namespace prefix in your stylesheet, e.g.
xmlns:ca="http://www.sas.com/xml/namespace/sas_doc_cas_actions-1.0",
and then select ca:actionSet,
$myActionSet/ca:casActions/ca:actionSet[1], etc.



On 14.04.2015 23:07, Craig Sampson craig.sampson@xxxxxxx wrote:
> Thanks to Gerrit and Michael I am closer but not quite all the way there
> yet.
> 
>  
> 
> I removed the namespace from the second input file and modified my
> apply-templates to:
> 
>  
> 
>         *<**xsl:apply-templates
> **select*=/"$myActionSet/casActions/actionSet[1]"//*>*
> 
> * *
> 
>  
> 
> I now get to the actionSet templates.
> 
>  
> 
> How do I include the namespace info in the apply-templates call? I donbt
> see how to do this so thatbs why I temporarily removed the namespace
> declaration from my second input and the declaration for it from my
> transform.
> 
>  
> 
> Ibll try adding modes tomorrow to see if that also helps.
> 
>  
> 
> Thanks,
> 
>   Craig
> 
>  
> 
> *From:* Michael Kay [mailto:mike@xxxxxxxxxxxx]
> *Sent:* Tuesday, April 14, 2015 4:34 PM
> *To:* xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> *Cc:* Craig Sampson
> *Subject:* Re:  Using doc( ) to get a second input file
> 
>  
> 
>  
> 
> On 14 Apr 2015, at 21:15, Craig Sampson craig.sampson@xxxxxxx
> <mailto:craig.sampson@xxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx
> <mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>> wrote:
> 
> 
> 
>     Hi All,
> 
>       I am trying to use the doc( ) function, in XSLT 2.0, to get a
>     second input file in one of my transforms. The primary input
>     contains an element brefActionSetb that triggers the logic to fetch
>     the second input.
> 
>      
> 
>       Within that template I do:
> 
>      
> 
>             *<xsl:variable name*=/"myActionSet" /
> 
>     /          /*select*=/"doc('file://sashq/root/pub/pubs_xiswork/sascrs/prod/v16/eclipse/workspace/castest/xml/actions.xml'
>     <file:///\\sashq\root\pub\pubs_xiswork\sascrs\prod\v16\eclipse\workspace\castest\xml\actions.xml'>)"/*/>*
> 
>      
> 
>       Which is successfully getting the second file. I know this because
>     I can write out to the log the contents of the file and I see the
>     text (no markup).
> 
>      
> 
>       But when I try to process this second file using:
> 
>      
> 
>             *<xsl:apply-templates select*=/"$myActionSet"/*/>*
> 
>      
> 
>       My transform fails due to the root element template being executed
>     a second time. In the root template I setup some java extension
>     processes that can only be run once so the second time through they
>     cause the transform to fail.
> 
>  
> 
> The usual way to solve this problem is with modes. Use
> 
>  
> 
>      *<xsl:apply-templates select*=/"$myActionSet" mode="actionSet"/*/>*
> 
>  
> 
> and add mode="actionSet" to the template rules for the second input file.
> 
>  
> 
> 
> 
>      
> 
>       Ibve tried to solve the problem two different ways, but neither
>     works. First I tried adding a xpath specification to the doc
>     function so that the returned XML would start at the element I was
>     interested in, like so:
> 
>      
> 
>             *<xsl:variable name*=/"myActionSet" /
> 
>     /          /*select*=/"doc('file://sashq/root/pub/pubs_xiswork/sascrs/prod/v16/eclipse/workspace/castest/xml/actions.xml'
>     <file:///\\sashq\root\pub\pubs_xiswork\sascrs\prod\v16\eclipse\workspace\castest\xml\actions.xml'>)//actionSet[@id=babcb]"/*/>*
> 
>     * *
> 
>     but that caused the function to fail and not fetch the second file.
> 
>  
> 
> I think it did fetch the second file. But the path expression
> //actionSet didn't select anything, because the actionSet elements are
> in a namespace, and you didn't tell it to use a namespace.
> 
> 
> 
>     I also tried a fragment specification b#actionSetb but this also failed.
> 
>      
> 
>       I then tried to kick the second input files root element out of my
>     root template with a test for ancestor-or-self::casActions and a
>     test for descendant-or-self::casActions. But neither of these tests
>     worked on the fetched second file.
> 
>  
> 
> Again, that's because you overlooked the namespace declaration.
> 
>      
> 
>       Any help would be appreciated in solving this problem.
> 
>      
> 
>      
> 
> Note the
> namespace: xmlns="http://www.sas.com/xml/namespace/sas_doc_cas_actions-1.0"
> 
>  
> 
> Michael Kay
> 
> Saxonica
> 
>      
> 
>      
> 
>      
> 
>     <?xml version="1.0" encoding="UTF-8"?>
> 
>     <casActions version="1.0" xml:lang="en"
>     xmlns="http://www.sas.com/xml/namespace/sas_doc_cas_actions-1.0"
>     date="Tue Apr 14 07:31:01 2015" branch="v9cas">
> 
>        <actionSet id="cas.tkds1" date="Mon Apr 13 22:18:33 2015"
>     name="tkds1" dvdname="cas" scriptname="tkds1" prmname="tkds1">
> 
>           <label id="cas.tkds1.__label" key="TKDS1_LABEL_LIBRARY"
>     dvd="cas" msgfile="tkmds1">DATA Step</label>
> 
>           <action id="cas.tkds1.execPgm" name="execPgm" entry="execpgm">
> 
>              <label id="cas.tkds1.execPgm.__label"
>     key="TKDS1_LABEL_EXECPGM" dvd="cas" msgfile="tkmds1">Execute DATA
>     Step</label>
> 
>      
> 
>      
> 
>     Thanks for the help,
> 
>       Craig
> 
>      
> 
>     BTW I follow this list in the daily digest so I wonbt see any
>     responses till tomorrow unless you copy me in your response to the list.
> 
>     My email is: craig.sampson@xxxxxxx <mailto:craig.sampson@xxxxxxx> 
> 
>      
> 
>      
> 
>     XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> 
>     EasyUnsubscribe <-list/293509> (by email)
> 
>  
> 
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <-list/225679>
> (by email <>)

-- 
Gerrit Imsieke
GeschC$ftsfC<hrer / Managing Director
le-tex publishing services GmbH
Weissenfelser Str. 84, 04229 Leipzig, Germany
Phone +49 341 355356 110, Fax +49 341 355356 510
gerrit.imsieke@xxxxxxxxx, http://www.le-tex.de

Registergericht / Commercial Register: Amtsgericht Leipzig
Registernummer / Registration Number: HRB 24930

GeschC$ftsfC<hrer: Gerrit Imsieke, Svea Jelonek,
Thomas Schmidt, Dr. Reinhard VC6ckler

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.