At 2009-09-15 19:36 +0530, Amit Panwar wrote:
1). I want to copy some image files (jpeg, gif etc) from one
directory to another directory.
e.g If I have following element in source xml
<image src="images/img123.jpg"> </image>
And I want to transform this element into
<file type="image" src="resources/images/img123.jpg"> </file>
Xslt makes everything easy in above transformation, but i don't know
how do I copy 'img123.jpg' from 'images' directory to
'resources/images' directory.
Standard XSLT does not provide a way of doing this for binary files
because the data model only contains characters that are allowed in
XML. For XML 1.0 there is a limited number of control characters
(characters below U+0020), but even for XML 1.1 the NUL (U+0000) is
still not available. For simple text files or HTML files I have
successfully used XSLT 2 xsl:result-document, unparsed-text() and
disable-output-escaping= to copy from one location to another.
2). In another transformation I'm reading a html files using
unparsed-text() function, now html data can have any number of 'img' tags.
unparsed-text() does not give you any element structure ... it only
gives you a single text node in the data model. Any angle brackets
found in the text file are not considered markup, only text. Hence
the name "unparsed text" because the text you get is not parsed for markup.
I want to use a loop to check all 'img' tags and want to change
value of src attribute of each img tag - via string manipulation.
Here is a example java code what i want to achieve in xslt.
The XPath data model on which XSLT is built does not give you the
kind of information from an HTML file you are asking for.
String htmlData; // varibale htmlData will have html contents of a files
while(htmlData.indexOf("img") != -1){
Do some processing then replace the value of src attribute then take
a substring of html data to remove current img tag.
htmlData = htmlData.substring(htmlData.indexOf("img")+3);
}
You would need to use something like <xsl:analyze-string> very
labouriously in order to do the kind of manipulation you need to do.
Are above two tasks doable in xslt?
Not at all easily, because XSLT is the wrong tool for manipulating
HTML ... it is suited for XHTML.
Have you considered converting HTML to XHTML using Tidy? Then it
would become a simple XSLT transformation because your input would then be XML.
I hope this helps.
. . . . . . . . . . . Ken
--
Upcoming hands-on code list, UBL, XSLT, XQuery and XSL-FO classes.
Interested in other classes? http://www.CraneSoftwrights.com/s/i/
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--