- From: Romain Deltour <rdeltour@gmail.com>
- Date: Fri, 14 Oct 2011 19:22:16 +0200
- To: Matthieu Ricaud-Dussarget <matthieu.ricaud@igs-cp.fr>
- Cc: xproc-dev@w3.org
> With <p:with-option name="href" select="concat('PAGES_SVG_0/', > @data)"/> I get an error : GRAVE: err:XC0011:Could not load > PAGES_SVG_0/ > It seems @data is empty at this point. Right. The XPath context at this point is a *document* (with 'object' as its root element), @data returns the empty sequence. I suppose it would work with: <p:with-option name="href" select="concat('PAGES_SVG_0/', */@data)"/> Romain. Le 14 oct. 11 à 16:58, Matthieu Ricaud-Dussarget a écrit : > Hi Romain, > > Thanks for your suggest ! > > It almost works but I still have problem to store the load the good > svg file. > > This is the code i've tested : > <p:for-each name="for-each-html-object"> > <p:iteration-source select="//h:object"> > <p:pipe step="generateECF" port="result"/> > </p:iteration-source> > <!--<p:output port="load-svg"/>--> > <p:load name="load-svg"> > <p:with-option name="href" select="concat('PAGES_SVG_0/', @data)"/> > <!--<p:with-option name="href" select="concat('PAGES_SVG_0/', > 'epub0001.svg')"/>--> > </p:load> > <p:xslt name="PDFTronSVG2epubFixedSVG"> > <p:input port="stylesheet"> > <p:document href="../xslt/PDFTronSVG2epubFixedSVG.xsl"/> > </p:input> > <p:input port="parameters"><p:empty/></p:input> > </p:xslt> > <p:store encoding="UTF-8" omit-xml-declaration="false" indent="true"> > <p:with-option name="href" select="concat('PAGES_SVG_01/', > tokenize(document-uri(/),'/')[last()])"></p:with-option> > </p:store> > </p:for-each> > > With <p:with-option name="href" select="concat('PAGES_SVG_0/', > 'epub0001.svg')"/>, it works, but it's always the same document that > is processed. > But it is processed 3 times, which proof the iteration on object > works fine (there a 3 object in my document) > > With <p:with-option name="href" select="concat('PAGES_SVG_0/', > @data)"/> I get an error : GRAVE: err:XC0011:Could not load > PAGES_SVG_0/ > It seems @data is empty at this point. > I have tried @h:data (prefix "h" binded to xhtml namespace), but I > get the same error. > > The spec indicate the xpath context inside an iteration is "the > sequence of documents that will be processed by the p:for-each", > that means each document is here <object data="..."/>, so I should > be able to get the data attribute, no? > > Any ideas ? > > Regards, > Matthieu. > > > > > Le 13/10/2011 14:13, Romain Deltour a écrit : >>> - should I iterate the <object> elements within the XHTML doc and >>> then getting the svg document as input >> >> That's what I would do. >> >>> (...) >>> <p:input port="source" select="document(concat('PAGES_SVG_0', >>> tokenize(@data,'/')[last()] ))"> >>> (...) >> >> The select expression is applied to the document connected on the >> input port. What you rather want here is to load the SVG documents >> using a dynamically computed URI, which is then connected to the >> primary input port of the XSLT. You can do that with p:load, e.g.: >> >> <p:load> >> <p:with-option name="href" select="concat('PAGES_SVG_0', >> tokenize(@data,'/')[last()])"/> >> </p:load> >> >> >> To summarize, the workflow would be: >> >> p:for-each (iterate the objects) >> p:load (load the document after having computed the URI) >> p:xslt >> >> Hope this helps, >> Romain. >> >> Le 13 oct. 11 à 13:31, Matthieu Ricaud-Dussarget a écrit : >> >>> Hi all, >>> >>> Continuing discovering xproc, I have a new problem today : >>> >>> One of the steps of my pipeline gives for result an XHTML document >>> that contains many >>> <object data="fileA.svg">, <object data="fileB.svg"> elements. >>> >>> Of course each referenced "file{?}.svg" exists in a specific >>> directory, let's call it "SVGdir". >>> >>> I'd like to iterate on those file{?}.svg and apply an XSLT >>> transformation to each one (and store the result in separate >>> directoty). >>> >>> I don't want to iterate the "SVGdir" directly cause it can >>> contains some svg files which I don't want to transform cause they >>> are not referenced in the XHTML document. >>> >>> I think there are 2 options : >>> - filtering the directory files according to the XHTML >>> - starting from the XHTML to iterate on the good SVG files in the >>> directory >>> I thought the 2nd option is better. >>> >>> (remind : I don't want the XSLT to be applied on the XHTML >>> document itself, cause I'd like it to be independant : it takes >>> one SVG in input and get one SVG in output.) >>> >>> The spec says that <p:xslt> can have a sequence of documents as >>> input. >>> But I don't find a way to make that work : >>> - should I give an xpath collection() for p:xslt/p:input/@select >>> => xproc error >>> - should I iterate the <object> elements within the XHTML doc and >>> then getting the svg document as input : >>> <p:for-each name="for-each-html-object"> >>> <p:iteration-source select="//h:object"> >>> <p:pipe step="generateECF" port="result"/> >>> </p:iteration-source> >>> <p:xslt name="PDFTronSVG2epubFixedSVG"> >>> <p:input port="source" select="document(concat('PAGES_SVG_0', >>> tokenize(@data,'/')[last()] ))"> >>> <p:pipe step="for-each-html-object" port="current"/> >>> </p:input> >>> [...] >>> </p:for-each> >>> => xproc err:XD0023:Invalid XPath expression >>> >>> I will continue to investigate for other solutions, but if you >>> have any advices, they are welcome ! >>> >>> Kind Regards, >>> >>> Matthieu. >>> >>> -- >>> Matthieu Ricaud >>> IGS-CP >>> Service Livre numérique >>> >>> >> >> >> > > > -- > Matthieu Ricaud > IGS-CP > Service Livre numérique > >
Received on Friday, 14 October 2011 17:22:48 UTC