Theoretically, it's better to read the library.xml file once, into a
(global, probably) variable, e.g.:
<xsl:variable name="nameLibrary" select="doc('library.xml')/>
This variable is now a node-set, i.e. the entire XML document, and can
be referenced with XPath just as with your main input document. (By the
way, your stylesheet will be more portable if you just use a shorter,
relative document URL, as above, than a full "file://..." path.)
Then inside your loop or template, use the variable to avoid doing file
i/o each time:
<xsl:template match="...">
<xsl:if test="$nameLibrary/names/name...">
However in practice, unless your library is huge and/or you are doing
lots of recursion and looping, you may not notice much of performance
difference between defining the variable, and making the doc() call over
and over.
My intuition says you'll not see any significant performance problem on
400 files -- but why not write it the more efficient way? It's more
elegant and maintainable (what if you later decide to change the library
file location? or put in on a web server far away? or discover you need
to parse 400,000 files, not 400?)
Good luck!
--Rich
Richard Fozzard, Computer Scientist
Geospatial Metadata at NGDC: http://www.ngdc.noaa.gov/metadata
Cooperative Institute for Research in Environmental Sciences (CIRES)
Univ. Colorado & NOAA National Geophysical Data Center, Enterprise Data Systems
325 S. Broadway, Skaggs 1B-305, Boulder, CO 80305
Office: 303-497-6487, Cell: 303-579-5615, Email:
richard(_dot_)fozzard(_at_)noaa(_dot_)gov
Mario Madunic said the following on 06/08/2010 12:57 PM:
This is more of a programming technique question than a how to.
I'll be creating a recursive function in XSLT that will manipulate a tokenized
string (on spaces), capitalize initial letter in each word and lower case the
rest of the word. An issue arises for product names and acronyms, as the way
they are spelt is quite specific. So I'll create a library XML file that will
contain the correct spelling for these strings and do a check on each string.
So my question is,
What is the best method to call the library XML file? As a parameter into the function (placing
the content of the library into a variable that is placed into the function), a straight
<value-of select="doc('file:///pathto/library.xml')..." /> each time the
function is called, or does it really matter as it might make no difference or discernable
difference? (I'll be parsing 400+ files all less than 30k.)
Just trying to find the best method someone with a programming background and
education (read post secondary education in computer science) would use.
Marijan (Mario) Madunic
Publishing Specialist
New Flyer Industries
--------------------------------------------------------------------
Please consider the environment before printing this e-mail.
CONFIDENTIALITY STATEMENT: This communication (and any and all information or
material transmitted with this communication) is confidential, may be
privileged and is intended only for the use of the intended recipient. If you
are not the intended recipient, any review, retransmission, circulation,
distribution, reproduction, conversion to hard copy, copying or other use of
this communication, information or material is strictly prohibited and may be
illegal. If you received this communication in error or if it is forwarded to
you without the express authorization of New Flyer, please notify us
immediately by telephone or by return email and permanently delete the
communication, information and material from any computer, disk drive, diskette
or other storage device or media. Thank you.
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--