<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>xslt &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/xslt/</link>
	<description>Feed of posts on WordPress.com tagged "xslt"</description>
	<pubDate>Sun, 29 Nov 2009 04:15:06 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[]]></title>
<link>http://erayizgin.wordpress.com/2009/11/27/etrete/</link>
<pubDate>Fri, 27 Nov 2009 17:58:32 +0000</pubDate>
<dc:creator>erayizgin</dc:creator>
<guid>http://erayizgin.wordpress.com/2009/11/27/etrete/</guid>
<description><![CDATA[XSLt,XML veri dosyasında bulunan elementler üzerinde seçme ve bu seçime göre çıktı üretebilen şablon]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>XSLt,XML veri dosyasında bulunan elementler üzerinde seçme ve bu seçime göre çıktı üretebilen şablonlar ve direktifleri kullanır.Şablon içindeki direktifler,veri dosyası içindeki elementlerin bağlarını seçme ve bu seçime göre işlenen verilerin çıktısını formatlamayı sağlar.</p>
<p><strong>PHP ve XSLT ile XML verilerinin İşlenmesi</strong></p>
<p>rssxsl.xsl</p>
<p>&#60;?xml version=&#8221;1.0&#8243; encoding=&#8221;ISO-8859-9&#8243; ?&#62;<br />
&#60;xsl:stylesheet version=&#8221;1.0&#8243;xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221;&#62;</p>
<p>&#60;xsl:output method=&#8221;xml&#8221; encoding=&#8221;ISO-8859-9&#8243; /&#62;</p>
<p>&#60;xsl:template match=&#8221;/&#8221;&#62;</p>
<p>&#60;html&#62;</p>
<p>&#60;head&#62;&#60;/head&#62;</p>
<p>&#60;body&#62;</p>
<p>&#60;xsl:apply-templates select=&#8221;rss/channel&#8221;/&#62;</p>
<p>&#60;/body&#62;</p>
<p>&#60;/html&#62;</p>
<p>&#60;/xsl:template&#62;</p>
<p>&#60;xsl:template match=&#8221;item&#8221;&#62;</p>
<p>Baslik:&#60;xsl:value-of select=&#8221;title&#8221;/&#62;&#60;/br&#62;</p>
<p>Link:&#60;xsl:value-of select=&#8221;link&#8221;/&#62;&#60;/br&#62;</p>
<p>Aciklama:&#60;xsl:value-of select=&#8221;description&#8221;/&#62;&#60;/br&#62;</p>
<p>&#60;hr/&#62;</p>
<p>&#60;/xsl:template&#62;</p>
<p>&#60;/xsl:stylesheet&#62;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Recuperar información de una base de datos y mostrarla en un webBrowser (C#, PHP, XML, XSLT)]]></title>
<link>http://elcheonline.wordpress.com/2009/11/22/recuperar-informacion-de-una-base-de-datos-y-mostrarla-en-un-webbrowser-c-php-xml-xslt/</link>
<pubDate>Sun, 22 Nov 2009 19:15:53 +0000</pubDate>
<dc:creator>admin</dc:creator>
<guid>http://elcheonline.wordpress.com/2009/11/22/recuperar-informacion-de-una-base-de-datos-y-mostrarla-en-un-webbrowser-c-php-xml-xslt/</guid>
<description><![CDATA[Código fuente ejemplo que recupera información de una base de datos y la muestra en el webbrowser de]]></description>
<content:encoded><![CDATA[Código fuente ejemplo que recupera información de una base de datos y la muestra en el webbrowser de]]></content:encoded>
</item>
<item>
<title><![CDATA[XML Message Forum in PHP &amp; XML]]></title>
<link>http://leisurehours.wordpress.com/2009/11/22/xml-message-forum-in-php-xml/</link>
<pubDate>Sun, 22 Nov 2009 12:29:28 +0000</pubDate>
<dc:creator>Manoj Gumber</dc:creator>
<guid>http://leisurehours.wordpress.com/2009/11/22/xml-message-forum-in-php-xml/</guid>
<description><![CDATA[I had coded this message forum as part of an assignment. This is a really very simple message forum ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I had coded this message forum as part of an assignment. This is a really very simple message forum using only PHP and XML and no database required. It just illustrates the concepts of</p>
<ul>
<li>XML</li>
<li>XSLT</li>
<li>DOM</li>
<li>XPATH</li>
</ul>
<p>You can download this forum <a title="XML Message Forum" href="http://www.box.net/shared/zmlnr62cth" target="_blank">here.</a></p>
<p>It contains a readme.txt file which explains how to use this.</p>
<p>&#160;</p>
<p>&#160;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Using xsl:value-of inside an html tag]]></title>
<link>http://leisurehours.wordpress.com/2009/11/18/using-xslvalue-of-inside-an-html-tag/</link>
<pubDate>Wed, 18 Nov 2009 08:47:26 +0000</pubDate>
<dc:creator>Manoj Gumber</dc:creator>
<guid>http://leisurehours.wordpress.com/2009/11/18/using-xslvalue-of-inside-an-html-tag/</guid>
<description><![CDATA[I was working on an xml assignment when I came across this problem. While writing xsl sheet for an d]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I was working on an xml assignment when I came across this problem. While writing xsl sheet for an displaying an xml file , I had to use &#60;xsl:value-of &#62; element inside an html tag or any other tag. But with normal syntax , things were not working. Stumbling on some books and xslt documentation , I found a way out.</p>
<p><a href="http://www.w3.org/TR/xslt#dt-attribute-value-template" target="_blank">Attribute Value Templates</a> are solution for this problem.</p>
<p>e.g when you use,</p>
<p>&#60;a href=&#8217;&#60;xsl:value-of select=&#8221;/page/results/prevnext/@prevresult&#8221;&#62;&#8217; &#62;Previous&#60;/a&#62;</p>
<p>It results in errors. The correct way using AVT is</p>
<p>&#60;a href=&#8221;{/page/results/prevnext/@prevresult&#8221;}&#62;Previous&#60;/a&#62;<br />
Note the curly brackets { } which indicate the Attribute Value Template.</p>
<p>AVTs are a convenience method for you to insert the result of an expression</p>
<p>into an attribute value. Otherwise you would have to use the equivalent</p>
<p>long-hand approach:<br />
&#60;a&#62;&#60;xsl:attribute name=&#8221;href&#8221;&#62;&#60;xsl:value-of</p>
<p>select=&#8221;/page/results/prevnext/@prevresult&#8221;/&#62;&#60;/xsl:attribute&#62;Previous&#60;/a&#62;</p>
<p>&#160;</p>
<p>Hope it is useful !!</p>
<pre>
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mapping fields from WoS API =&gt; LOM]]></title>
<link>http://bibliosightnews.wordpress.com/2009/11/16/mapping-fields-from-wos-api-lom/</link>
<pubDate>Mon, 16 Nov 2009 10:05:08 +0000</pubDate>
<dc:creator>Nick</dc:creator>
<guid>http://bibliosightnews.wordpress.com/2009/11/16/mapping-fields-from-wos-api-lom/</guid>
<description><![CDATA[This is my first attempt at mapping the fields returned from the WoS API to LOM – hopefully this can]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>This is my first attempt at mapping the fields returned from the WoS API to LOM – hopefully this can form the basis of an appropriate XSLT transformation.</p>
<p>As my template I’ve used the first record from Mike’s full query to the API which happens to be a book review.  It might have been better to start with a journal article but we’ll obviously need to look at the full range of records (N.B.  Will we actually be able to return &#60;doctype&#62;  when API restrictions are applied?)</p>
<table border="1" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="180" valign="top"><strong>Metadata</strong></td>
<td width="344" valign="top"><strong>WoS </strong><strong>API</strong><strong> field[s]</strong></td>
<td width="401" valign="top"><strong>LOM field[s]</strong></td>
</tr>
<tr>
<td width="180" valign="top">Record unique identifier</td>
<td width="344" valign="top">&#60;ut&#62;<strong>ISI</strong><strong> </strong><strong>UT</strong><strong> identifier</strong>&#60;/ut&#62;</td>
<td width="401" valign="top">&#60;lom:identifier&#62;&#60;lom:entry&#62;<strong>ISI</strong><strong> </strong><strong>UT</strong><strong> identifier</strong>&#60;/lom:entry&#62;&#60;/lom:identifier&#62;</td>
</tr>
<tr>
<td width="180" valign="top"></td>
<td width="344" valign="top"></td>
<td width="401" valign="top">&#60;ns0:bibliographicCitation   xmlns:imsmd=&#8221;http://www.imsglobal.org/xsd/imsmd_v1p2&#8243;&#62;</td>
</tr>
<tr>
<td width="180" valign="top">Source title</td>
<td width="344" valign="top">&#60;source_title&#62;<strong>TITLE</strong>&#60;/source_title&#62;</td>
<td width="401" valign="top">&#60;ns0:title&#62;&#60;ns0:string  &#62;<strong>TITLE</strong>&#60;/ns0:string&#62;&#60;/ns0:title&#62;</td>
</tr>
<tr>
<td width="180" valign="top">Volume/issue/pages/Date (month/year)</td>
<td width="344" valign="top">&#60;bib_id&#62;<strong>31 (7): 1116-1117   NOV 2009</strong>&#60;/bib_id&#62;</td>
<td width="401" valign="top">&#60;ns0:volume&#62;<strong>31</strong>&#60;/ns0:volume&#62;&#60;ns0:issue&#62;<strong>7</strong>&#60;/ns0:issue&#62;&#60;ns0:date&#62;<strong>NOV 2009</strong>&#60;/ns0:date&#62;</td>
</tr>
<tr>
<td width="180" valign="top">Pages</td>
<td width="344" valign="top">&#60;bib_pages begin=&#8221;<strong>1116</strong>&#8221;   end=&#8221;<strong>1117</strong>&#8221; pages=&#8221;<strong>2</strong>&#8220;&#62;<strong>1116-1117</strong>&#60;/bib_pages&#62;   <strong> </strong></td>
<td width="401" valign="top">&#60;ns0:spage&#62;<strong>1116</strong>&#60;/ns0:spage&#62;&#60;ns0:epage&#62;<strong>1117</strong>&#60;/ns0:epage&#62;</td>
</tr>
<tr>
<td width="180" valign="top"></td>
<td width="344" valign="top"></td>
<td width="401" valign="top">&#60;/ns0:bibliographicCitation&#62;</td>
</tr>
<tr>
<td width="180" valign="top">Date(year)/volume</td>
<td width="344" valign="top">&#60;bib_issue year=&#8221;<strong>2009</strong>&#8221;   vol=&#8221;<strong>31</strong>&#8221; /&#62;</td>
<td width="401" valign="top">&#60;ns0:volume&#62;<strong>31</strong>&#60;/ns0:volume&#62;&#60;ns0:date&#62;<strong>NOV 2009</strong>&#60;/ns0:date&#62;</td>
</tr>
<tr>
<td width="180" valign="top">Item title</td>
<td width="344" valign="top">&#60;item_title&#62;<strong>ITEM TITLE</strong>&#60;/item_title&#62;</td>
<td width="401" valign="top">&#60;lom:title&#62;&#60;lom:string  &#62;<strong>ITEM TITLE</strong>&#60;/lom:string&#62;&#60;/lom:title&#62;</td>
</tr>
<tr>
<td width="180" valign="top">Author(role/name)</td>
<td width="344" valign="top">&#60;authors count=&#8221;<strong>1</strong>&#8220;&#62;&#60;primaryauthor&#62;<strong>Robertson, S</strong>&#60;/primaryauthor&#62;&#60;fullauthorname&#62;<strong> </strong> &#60;AuRole&#62;<strong>Author, Reprint   Author</strong>&#60;/AuRole&#62;<strong> </strong> &#60;AuLastName&#62;<strong>Robertson</strong>&#60;/AuLastName&#62;<strong> </strong> &#60;AuFirstName&#62;<strong> Steve</strong>&#60;/AuFirstName&#62;<strong> </strong> &#60;address number=&#8221;<strong>1</strong>&#8220;&#62;<strong>Leeds</strong><strong> Metropolitan Univ, Ctr Mens Hlth, </strong><strong>Leeds</strong><strong> LS1 3HE, W </strong><strong>Yorkshire</strong><strong>, </strong><strong>England</strong>&#60;/address&#62;<strong> </strong> &#60;AuCollectiveName&#62;<strong> Robertson, S</strong><strong>teve</strong>&#60;/AuCollectiveName&#62;<strong> </strong> &#60;/fullauthorname&#62;&#60;/authors&#62;</td>
<td width="401" valign="top">&#60;lom:lifeCycle&#62;&#60;lom:contribute&#62;&#60;lom:role&#62;&#60;lom:source&#62;LOMv1.0&#60;/lom:source&#62;&#60;lom:value&#62;author&#60;/lom:value&#62;&#60;/lom:role&#62;&#60;lom:entity&#62;BEGIN:vcard&#38;#xD;FN:<strong>Steve Robertson</strong>&#38;#xD;END:vcard&#60;/lom:entity&#62;&#60;/lom:contribute&#62;
<p>&#160;</p>
<p>&#60;/lom:lifeCycle&#62;</td>
</tr>
</tbody>
</table>
<p>The XML for the record is reproduced below with relevant fields emphasise in red/bold:</p>
<pre><span style="font-size:120%;">&#60;REC inst_id="0" recid="184349093" hot="yes" sortkey="3067387552" timescited="0" sharedrefs="0" inpi="false"&#62;
 &#60;item issue="184349006" recid="184349093" coverdate="200911" sortkey="3067387552" refkey="5892051" dbyear="2009"&#62;
  <strong><span style="color:#ff0000;">&#60;ut&#62;000271043700017&#60;/ut&#62;</span></strong>
  &#60;i_ckey&#62;ROBE1116090031SS&#60;/i_ckey&#62;
  &#60;i_cid&#62;0130983640&#60;/i_cid&#62;
  <strong><span style="color:#ff0000;">&#60;source_title&#62;SOCIOLOGY OF HEALTH &#38; ILLNESS&#60;/source_title&#62;</span></strong>
  &#60;source_abbrev&#62;SOCIOL HEALTH ILL&#60;/source_abbrev&#62;
  <span style="color:#ff0000;"><strong>&#60;item_title&#62;Men’s Health: Body, Identity and Social Context&#60;/item_title&#62;</strong></span>
  &#60;sq&#62;06031J0&#60;/sq&#62;
  <span style="color:#ff0000;"><strong>&#60;bib_id&#62;31 (7): 1116-1117 NOV 2009&#60;/bib_id&#62;
  &#60;bib_pages begin="1116" end="1117" pages="2"&#62;1116-1117&#60;/bib_pages&#62;
  &#60;bib_issue year="2009" vol="31"/&#62;</strong></span>
  &#60;doctype code="B"&#62;Book Review&#60;/doctype&#62;
  &#60;editions full="SSCI"/&#62;
  &#60;languages count="1"&#62;
   &#60;primarylang code="EN"&#62;English&#60;/primarylang&#62;
  &#60;/languages&#62;
  &#60;reviewed_work&#62;
   &#60;rw_langs count="1"&#62;
    &#60;rw_lang code="EN"&#62;English&#60;/rw_lang&#62;
   &#60;/rw_langs&#62;
   &#60;rw_authors count="2"&#62;
    &#60;rw_author&#62;Broom, A&#60;/rw_author&#62;
    &#60;rw_author&#62;Tovey, P&#60;/rw_author&#62;
   &#60;/rw_authors&#62;
   &#60;rw_year&#62;2009&#60;/rw_year&#62;
  &#60;/reviewed_work&#62;
  <span style="color:#ff0000;"><strong>&#60;authors count="1"&#62;
   &#60;primaryauthor&#62;Robertson, S&#60;/primaryauthor&#62;
   &#60;fullauthorname&#62;
    &#60;AuRole&#62;Author, Reprint Author&#60;/AuRole&#62;
    &#60;AuLastName&#62;Robertson&#60;/AuLastName&#62;
    &#60;AuFirstName&#62;Steve&#60;/AuFirstName&#62;
    &#60;address number="1"&#62;
    Leeds Metropolitan Univ, Ctr Mens Hlth, Leeds LS1 3HE, W Yorkshire, England
    &#60;/address&#62;
    &#60;AuCollectiveName&#62;Robertson, Steve&#60;/AuCollectiveName&#62;
   &#60;/fullauthorname&#62;
  &#60;/authors&#62;</strong></span>
  &#60;reprint&#62;
   &#60;rp_author&#62;Robertson, S&#60;/rp_author&#62;
   &#60;rp_address&#62;Leeds Metropolitan Univ, Ctr Mens Hlth, Leeds LS1 3HE, W Yorkshire, England&#60;/rp_address&#62;
   &#60;rp_organization&#62;Leeds Metropolitan Univ&#60;/rp_organization&#62;
   &#60;rp_suborganizations count="1"&#62;
    &#60;rp_suborganization&#62;Ctr Mens Hlth&#60;/rp_suborganization&#62;
   &#60;/rp_suborganizations&#62;
   &#60;rp_city&#62;Leeds&#60;/rp_city&#62;
   &#60;rp_state&#62;W Yorkshire&#60;/rp_state&#62;
   &#60;rp_country&#62;England&#60;/rp_country&#62;
   &#60;rp_zips count="1"&#62;
    &#60;rp_zip location="AC"&#62;LS1 3HE&#60;/rp_zip&#62;
   &#60;/rp_zips&#62;
  &#60;/reprint&#62;
  &#60;research_addrs count="1"&#62;
   &#60;research&#62;
    &#60;rs_address number="1"&#62;Leeds Metropolitan Univ, Ctr Mens Hlth, Leeds LS1 3HE, W Yorkshire, England&#60;/rs_address&#62;
    &#60;rs_organization&#62;Leeds Metropolitan Univ&#60;/rs_organization&#62;
    &#60;rs_suborganizations count="1"&#62;
     &#60;rs_suborganization&#62;Ctr Mens Hlth&#60;/rs_suborganization&#62;
    &#60;/rs_suborganizations&#62;
    &#60;rs_city&#62;Leeds&#60;/rs_city&#62;
    &#60;rs_state&#62;W Yorkshire&#60;/rs_state&#62;
    &#60;rs_country&#62;England&#60;/rs_country&#62;
    &#60;rs_zips count="1"&#62;
     &#60;rs_zip location="AC"&#62;LS1 3HE&#60;/rs_zip&#62;
    &#60;/rs_zips&#62;
   &#60;/research&#62;
  &#60;/research_addrs&#62;
  &#60;abstract avail="N"/&#62;
  &#60;refs count="1"&#62;
   &#60;ref&#62;184349094&#60;/ref&#62;
  &#60;/refs&#62;
 &#60;/item&#62;
&#60;/REC&#62;</span></pre>
<p>As Mike points out, we should bear in mind that there are variations in the fields that come back from the WoS API, for example: bib_id &#8211; depends on what bib data has been entered into WoS; authors &#8211; The level of detail varies here too, sometimes there is no full author name and so on&#8230;.all of which will impact on the sophistication we require from the XSLT.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[My Year at Harcourt Publishing - XSL-FO]]></title>
<link>http://jewelsjacobs.wordpress.com/2009/11/14/my-year-at-harcourt-publishing-xsl-fo/</link>
<pubDate>Sat, 14 Nov 2009 20:48:12 +0000</pubDate>
<dc:creator>jewelsjacobs</dc:creator>
<guid>http://jewelsjacobs.wordpress.com/2009/11/14/my-year-at-harcourt-publishing-xsl-fo/</guid>
<description><![CDATA[After getting pregnant with sweet baby boy number 2 My husband and I felt the 24-7 life of business ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>After getting pregnant with sweet baby boy number 2 My husband and I felt the 24-7 life of business ownership was not an ideal situation for an infant and newborn. Both they, and we, needed consistent structure. Someone needed to get a real job.</p>
<p>Because my husband had focused more on the printing side of our business and I the web design / server admin / development, it was thought I would have a better chance of making more money.</p>
<p>With belly still deflating and memory shot from sleep deprivation I entered back into corporate life after 8 years with a contract at <strong>Harcourt Publishing</strong> thanks to <a href="http://www.linkedin.com/in/comsysdquinn" target="_blank">Donna Quinn</a> at <a href="http://www.linkedin.com/companies/3630/COMSYS?trk=pp_icon&#38;goback=%2Econ" target="_blank">COMSYS</a>.</p>
<p>I started out as a <strong>Visual Designer</strong> working with a talented UI designer under a brilliant Usability expert <a href="http://www.linkedin.com/pub/karen-bachmann/4/a/884" target="_blank">Karen Bachmann</a>. I got a chance to work on an Ajax / Java app with Riptide &#8211; the brilliant Java Shop. The folks at Riptide, including a fantastic developer by the name of <a href="http://www.linkedin.com/pub/morris-treibitz/4/946/32b" target="_blank">Moe Treibiz</a>, were awesome and I learned a lot from them. I saw how Project Management was expertly handled by <a href="http://www.northhighland.com">North Highland</a>. I watched them at work their craft with awe.</p>
<p>The best part, however, was the opportunity I got to <strong>develop a PDF generation system with XSL-FO</strong> without knowing anything about it before hand thanks to <a href="http://www.linkedin.com/pub/fred-ganter/9/60b/243" target="_blank">Fred Ganter</a> &#8211; at the time the lead of the Content group. This esoteric skill would open doors for me down the road.</p>
<p>I was introduced to so many wonderful technologies, methodologies and people in such a short period of time.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Quick sketch #2]]></title>
<link>http://bibliosightnews.wordpress.com/2009/11/13/332/</link>
<pubDate>Fri, 13 Nov 2009 09:15:55 +0000</pubDate>
<dc:creator>Nick</dc:creator>
<guid>http://bibliosightnews.wordpress.com/2009/11/13/332/</guid>
<description><![CDATA[The diagram below is Arthur&#8217;s update of my earlier quick sketch to illustrate what Bibliosight]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>The diagram below is Arthur&#8217;s update of my earlier <a href="http://bibliosightnews.wordpress.com/2009/10/01/quick-sketch/" target="_blank">quick sketch</a> to illustrate what Bibliosight will aim to achieve by the formal #jiscri deadline.</p>
<p>It is numbered and colour coded &#8211; stages 1 &#8211; 3 (shades of blue) are within the #jiscri timeframe; stages 2 (green) &#38; 5 (buff) will require ongoing work beyond the deadline.</p>
<p>(N.B.  Click on the image for a full size view in a separate browser window.)</p>
<p><a href="http://bibliosightnews.wordpress.com/files/2009/11/bibliosight.jpg"><img class="aligncenter size-medium wp-image-331" title="Bibliosight" src="http://bibliosightnews.wordpress.com/files/2009/11/bibliosight.jpg?w=300" alt="Bibliosight" width="300" height="232" /></a></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Mobile programming and expanding menus with XSLT]]></title>
<link>http://shirl9141.wordpress.com/2009/11/03/mobile-programming-and-expanding-menus-with-xslt/</link>
<pubDate>Tue, 03 Nov 2009 11:11:39 +0000</pubDate>
<dc:creator>shirl9141</dc:creator>
<guid>http://shirl9141.wordpress.com/2009/11/03/mobile-programming-and-expanding-menus-with-xslt/</guid>
<description><![CDATA[I&#8217;m working a new project in my web development class, CSCI E-153 and would like to share some]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;m working a new project in my web development class, <a href="http://isites.harvard.edu/icb/icb.do?keyword=cscie153-2009" target="_blank">CSCI E-153</a> and would like to share some of the technologies that we are using. The class includes XML, XSLT, XSL-FO, JSON, AJAX, etc and has been a lot of fun so far. The project we are working on entails XML data files transformed  into a collection of  well-structured web pages by using XML style sheets, XSLT.</p>
<p>My enviroment consist of the Mac OS(Leopard), Apache Tomcat, and Cocoon. I&#8217;ve tried using  the online <a href="http://www.opera.com/mini/demo/" target="_blank">Opera Mini simulator</a> to test my application, but it only works for online apps. So, localhost won&#8217;t work. Although, if you prefer to work in the cloud, <a href="http://aws.amazon.com/ec2/" target="_blank">Amazon EC2</a> is a good place to start.   So, I&#8217;m testing with the online <a href="http://www.testiphone.com/" target="_blank">IPhone</a> simulator, which is really nice and convenient. If you would like to use a simple browser to test your application for the mime-type, <span style="font-size:x-small;"><span style="font-size:x-small;">application/vnd.wap.xhtml+xml</span></span>, the  <a href="https://addons.mozilla.org/en-US/firefox/addon/1345" target="_blank">XHTML Mobile profile add-on for Firefox</a> is available to download. The ECMAScript, <a title="JavaScript" href="/wiki/JavaScript">JavaScript</a>, <a title="ActionScript" href="/wiki/ActionScript">ActionScript</a>, and <a title="JScript" href="/wiki/JScript">JScript</a>, used with the Firefox add-on was Javascript for expanding menus to free up the real estate. Below is the Javascript function to show or hide the menus based on the class attribute.</p>
<div><code>function showMenu(obj)<br />
{</code></div>
<table border="0">
<tbody>
<tr>
<td> </td>
<td colspan="2">if (obj.className==&#8217;normal&#8217;)</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>obj.className = &#8216;expand&#8217;;</td>
</tr>
<tr>
<td> </td>
<td colspan="2">else</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>obj.className = &#8216;normal&#8217;;</td>
</tr>
</tbody>
</table>
<div><code>}</code></div>
<div>The css stylesheet will look like this.</div>
<table border="0">
<tbody>
<tr>
<td colspan="2">.normal ul</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td> </td>
<td>display:none;</td>
</tr>
<tr>
<td>}</td>
</tr>
<tr>
<td colspan="2">.expand ul</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td> </td>
<td>display:block;</td>
</tr>
<tr>
<td>}</td>
</tr>
</tbody>
</table>
<p>Now we can look at the XSLT portion of the code. This line of code sets the variable $id_name to the current-grouping-key() in a for-each-group loop that groups all the elements in the XML file by a key. All the spaces are replaced by underscores since spaces are not allowed in the id name.<br />
<code><br />
&#60;xsl:variable name="id_name" select="replace(current-grouping-key(),' ','_')"/&#62;</code></p>
<p>Next we set the onclick event in the ul element, which calls the Javascript function above to show/hide the menus. We also replace the commas with underscores. Of course, we could have nested the replace functions and then set the variable $id_name or make a new template function and call it recursively until we have replaced all the commas, spaces, tabs, etc.</p>
<p><code>&#60;ul  onclick="javascript:showMenu(this)" id="{replace($id_name,',','_')}" class="normal"&#62;</code><br />
  </p>
<p><code><br />
&#60;li&#62;&#60;xsl:value-of select="normalize-space(current-grouping-key())"/&#62; </code>    more code &#8230;..</p>
<p><code>&#60;/li&#62;&#60;/ul&#62;</code></p>
<p>Make sure the ul element is assigned an id, otherwise the <code>showMenu(this)</code> will not work.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Senior Web Developer]]></title>
<link>http://mindsourceinc.wordpress.com/2009/10/27/senior-web-developer/</link>
<pubDate>Wed, 28 Oct 2009 03:00:32 +0000</pubDate>
<dc:creator>Michelle</dc:creator>
<guid>http://mindsourceinc.wordpress.com/2009/10/27/senior-web-developer/</guid>
<description><![CDATA[Our client in SAN MATEO, CA,  is looking for a SENIOR WEB DEVELOPER for front-end development of nex]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Our client in <strong>SAN MATEO, CA</strong>,  is looking for a <strong>SENIOR WEB DEVELOPER</strong> for front-end development of next generation data modeling and visualization tools.  The ideal candidate would have expertise in front end development of complex Rich Internet Applications (RIA) and have demonstrated the ability to develop high quality enterprise software in a dynamic environment.</p>
<p><strong>Responsibilities</strong></p>
<ul>
<li>Develop front end of Rich Internet Applications for Java-based server products</li>
<li>Analyze functional requirements and specifications through close interaction with Product Management and other team members</li>
<li>Participate in product design and architectural discussions</li>
<li>Write unit tests to ensure developed user interfaces meet product requirements</li>
<li>Provide support to the QA and support organizations</li>
<li>Provide feedback and guidance to technical writers</li>
<li>Develop appropriate documentation for architectural, design, implementation and test activities.</li>
</ul>
<p><strong>Required Skills</strong></p>
<ul>
<li>Bachelor&#8217;s degree in Computer Science (or related field of study)</li>
<li>Minimum of 6 years experience with front end development of Web-based user interfaces</li>
<li>Minimum of 2 years experience with front end development of rich internet applications (RIA)</li>
<li>Expertise in building applications using the following technologies:  Flex 3/4, Flash Action Script, HTML, DHTML, JavaScript, JSON, CSS</li>
<li>Experience with the following tools: Maven, ANT, Subversion, CVS</li>
<li>Familiar with cross browser support issues and solutions as well as i18n issues and solutions</li>
<li>Experience doing software development in a structured, automated, and distributed development environment including design, development, QA, and documentation.</li>
<li>Strong communication skills with the ability to present technical concepts concisely to non-technical members of the team.</li>
</ul>
<p><strong>Nice to Have:</strong></p>
<ul>
<li>Familiarity with existing data modeling tools is a plus: ER/Studio ERWin, TOAD</li>
<li>Experience in building applications using any of the following technologies is a plus: JSP, Struts, JavaScript, JQuery, SEAM, GWT, Rich Faces, extjs, XML/XSLT, AIR</li>
</ul>
<p>If you are interested, please send us your resume to <a href="mailto:raj@mindsource.com?subject=Senior Web Developer">raj@mindsource.com</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[DownLoad Excel MultiSheet]]></title>
<link>http://kuanglian2000.wordpress.com/2009/10/26/download-excel-multisheet/</link>
<pubDate>Mon, 26 Oct 2009 10:48:18 +0000</pubDate>
<dc:creator>kuanglian2000</dc:creator>
<guid>http://kuanglian2000.wordpress.com/2009/10/26/download-excel-multisheet/</guid>
<description><![CDATA[這裡是asp.net Code的部份，這裡作了一個Excel檔案。 protected string ExportExeclByXSLT_Direct(DataSet dsReportData) { ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><span style="color:#008000;">這裡是asp.net Code的部份，這裡作了一個Excel檔案。</span></p>
<p>protected string ExportExeclByXSLT_Direct(DataSet dsReportData)<br />
{<br />
string fileName = &#8220;././DownLoadFile/ExcelExport.xls&#8221;;<br />
string xslPath = &#8220;././Xsl_Template/Excel.xslt&#8221;;<br />
string xlsPath = &#8220;././DownLoadFile/ExcelExport.xls&#8221;;<br />
StreamWriter oExcelWriter = System.IO.File.CreateText(Server.MapPath(xlsPath));<br />
try<br />
{<br />
XmlDataDocument xddData = new XmlDataDocument(dsReportData);<br />
XslCompiledTransform xt = new XslCompiledTransform();<br />
xt.Load(Server.MapPath(xslPath));<br />
xt.Transform(xddData, null, oExcelWriter);<br />
return fileName;<br />
}<br />
catch (Exception ex)<br />
{<br />
return &#8220;&#8221;;<br />
}<br />
finally<br />
{<br />
oExcelWriter.Close();<br />
}<br />
}</p>
<p><span style="color:#008000;">這裡是Excel下載的頁面(DownLoad.aspx)</span></p>
<p>protected void Page_Load(object sender, EventArgs e)<br />
{<br />
NameValueCollection coll = Request.QueryString;<br />
String strRequest = coll["file"];<br />
if (strRequest != &#8220;&#8221;)<br />
{<br />
String path = Server.MapPath(strRequest);<br />
FileInfo file = new FileInfo(path);<br />
StreamReader sr = null;<br />
try<br />
{<br />
if (file.Exists)<br />
{<br />
<span style="color:#0000ff;"><strong> //Method-1 將檔案資料讀入Stream,這時檔案已經可以刪除了..之後再把檔案內容輸出即可 </strong></span><br />
//Read File Content<br />
sr = new StreamReader(path);<br />
Response.Clear();<br />
Response.AddHeader(&#8220;Content-Disposition&#8221;, &#8220;attachment; filename=ExcelExport.xls&#8221;);<br />
Response.AddHeader(&#8220;Content-Length&#8221;, file.Length.ToString());<br />
Response.ContentType = &#8220;application/vnd.ms-excel&#8221;;<br />
Response.Write(sr.ReadToEnd());<br />
Response.End();</p>
<p><span style="color:#0000ff;"><strong>//Method-2 這是第二個方法,直接把檔案內容寫到前端,此時是不允許將檔案給刪除的,因為檔案是讀取的目標</strong></span><br />
//Response.Clear();<br />
//Response.AddHeader(&#8220;Content-Disposition&#8221;, &#8220;attachment; filename=ExcelExport.xls&#8221;);<br />
//Response.AddHeader(&#8220;Content-Length&#8221;, file.Length.ToString());<br />
//Response.ContentType = &#8220;application/vnd.ms-excel&#8221;;<br />
//Response.WriteFile(file.FullName);<br />
//Response.End();</p>
<p>}</p>
<p>}<br />
catch<br />
{</p>
<p>}<br />
finally<br />
{<br />
if (sr != null) sr.Close(); <strong><span style="color:#ff0000;">//Close Reader 注意:要記得把連接關閉</span></strong><br />
if (file.Exists)file.Delete(); <strong><span style="color:#ff0000;">//Delete Temp DownLoad File</span></strong><br />
}<br />
}<br />
}</p>
<p><span style="color:#008000;">這裡是XSLT的部份，負責將DataSet轉換成Excel的XML資料</span></p>
<p>&#60;xsl:stylesheet version=&#8221;1.0&#8243;<br />
xmlns=&#8221;urn:schemas-microsoft-com:office:spreadsheet&#8221;<br />
xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221;<br />
xmlns:msxsl=&#8221;urn:schemas-microsoft-com:xslt&#8221;<br />
xmlns:o=&#8221;urn:schemas-microsoft-com:office:office&#8221;<br />
xmlns:x=&#8221;urn:schemas-microsoft-com:office:excel&#8221;<br />
xmlns:ss=&#8221;urn:schemas-microsoft-com:office:spreadsheet&#8221; &#62;</p>
<p>&#60;xsl:template match=&#8221;*&#8221;&#62;<br />
&#60;ss:Workbook xmlns:ss=&#8221;urn:schemas-microsoft-com:office:spreadsheet&#8221;&#62;<br />
&#60;ss:Worksheet ss:Name=&#8221;Main&#8221;&#62;<br />
&#60;ss:Table&#62;<br />
&#60;!&#8211;資料標題&#8211;&#62;<br />
&#60;ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;Main[position() = 1]/*&#8221;&#62;<br />
&#60;ss:Cell&#62;<br />
&#60;ss:Data ss:Type=&#8221;String&#8221;&#62;<br />
&#60;xsl:value-of select=&#8221;local-name()&#8221;/&#62;<br />
&#60;/ss:Data&#62;<br />
&#60;/ss:Cell&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;Main&#8221;&#62;<br />
&#60;!&#8211;資料內容&#8211;&#62;<br />
&#60;ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;*&#8221;&#62;<br />
&#60;ss:Cell&#62;<br />
&#60;ss:Data ss:Type=&#8221;String&#8221;&#62;<br />
&#60;xsl:value-of select=&#8221;.&#8221;/&#62;<br />
&#60;/ss:Data&#62;<br />
&#60;/ss:Cell&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Row&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Table&#62;<br />
&#60;/ss:Worksheet&#62;<br />
&#60;ss:Worksheet ss:Name=&#8221;HQ_Detail&#8221;&#62;<br />
&#60;ss:Table&#62;<br />
&#60;!&#8211;資料標題&#8211;&#62;<br />
&#60;ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;HQ_Detail[position() = 1]/*&#8221;&#62;<br />
&#60;ss:Cell&#62;<br />
&#60;ss:Data ss:Type=&#8221;String&#8221;&#62;<br />
&#60;xsl:value-of select=&#8221;local-name()&#8221;/&#62;<br />
&#60;/ss:Data&#62;<br />
&#60;/ss:Cell&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;HQ_Detail&#8221;&#62;<br />
&#60;ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;*&#8221;&#62;<br />
&#60;ss:Cell&#62;<br />
&#60;ss:Data ss:Type=&#8221;String&#8221;&#62;<br />
&#60;xsl:value-of select=&#8221;.&#8221;/&#62;<br />
&#60;/ss:Data&#62;<br />
&#60;/ss:Cell&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Row&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Table&#62;<br />
&#60;/ss:Worksheet&#62;<br />
&#60;ss:Worksheet ss:Name=&#8221;NL_Detail&#8221;&#62;<br />
&#60;ss:Table&#62;<br />
&#60;!&#8211;資料標題&#8211;&#62;<br />
&#60;ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;NL_Detail[position() = 1]/*&#8221;&#62;<br />
&#60;ss:Cell&#62;<br />
&#60;ss:Data ss:Type=&#8221;String&#8221;&#62;<br />
&#60;xsl:value-of select=&#8221;local-name()&#8221;/&#62;<br />
&#60;/ss:Data&#62;<br />
&#60;/ss:Cell&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;NL_Detail&#8221;&#62;<br />
&#60;ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;*&#8221;&#62;<br />
&#60;ss:Cell&#62;<br />
&#60;ss:Data ss:Type=&#8221;String&#8221;&#62;<br />
&#60;xsl:value-of select=&#8221;.&#8221;/&#62;<br />
&#60;/ss:Data&#62;<br />
&#60;/ss:Cell&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Row&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Table&#62;<br />
&#60;/ss:Worksheet&#62;<br />
&#60;ss:Worksheet ss:Name=&#8221;CH_Detail&#8221;&#62;<br />
&#60;ss:Table&#62;<br />
&#60;!&#8211;資料標題&#8211;&#62;<br />
&#60;ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;CH_Detail[position() = 1]/*&#8221;&#62;<br />
&#60;ss:Cell&#62;<br />
&#60;ss:Data ss:Type=&#8221;String&#8221;&#62;<br />
&#60;xsl:value-of select=&#8221;local-name()&#8221;/&#62;<br />
&#60;/ss:Data&#62;<br />
&#60;/ss:Cell&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;CH_Detail&#8221;&#62;<br />
&#60;ss:Row&#62;<br />
&#60;xsl:for-each select=&#8221;*&#8221;&#62;<br />
&#60;ss:Cell&#62;<br />
&#60;ss:Data ss:Type=&#8221;String&#8221;&#62;<br />
&#60;xsl:value-of select=&#8221;.&#8221;/&#62;<br />
&#60;/ss:Data&#62;<br />
&#60;/ss:Cell&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Row&#62;<br />
&#60;/xsl:for-each&#62;<br />
&#60;/ss:Table&#62;<br />
&#60;/ss:Worksheet&#62;</p>
<p>&#60;/ss:Workbook&#62;<br />
&#60;/xsl:template&#62;</p>
<p>&#60;/xsl:stylesheet&#62;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Insert [content data] into HTML control - XSLT]]></title>
<link>http://lifeisimple.wordpress.com/2009/10/23/169/</link>
<pubDate>Fri, 23 Oct 2009 04:37:19 +0000</pubDate>
<dc:creator>lifeisimple</dc:creator>
<guid>http://lifeisimple.wordpress.com/2009/10/23/169/</guid>
<description><![CDATA[The first example is more verbose than the second, as the second uses the shortcut method of includi]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><blockquote><p>The first example is more verbose than the second, as the second uses the shortcut method of including commands inside existing tags such as the anchor (a) tag.  The first example uses the xslt commands to inject the attribute into the preceding tag</p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;ul&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;xsl:for-each select=&#8221;$currentPage/node&#8221;&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;li&#62;&#60;a&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;xsl:attribute name=&#8221;href&#8221;&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;xsl:value-of select=&#8221;umbraco.library:NiceUrl(current()/@id)&#8221;/&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;/xsl:attribute&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;xsl:value-of select=&#8221;current()/@nodeName&#8221;/&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;/a&#62;&#60;/li&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;/xsl:for-each&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;/ul&#62;</span></p>
</blockquote>
<p style="padding-left:30px;">or</p>
<blockquote>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;ul&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;xsl:for-each select=&#8221;$currentPage/node&#8221;&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;li&#62;&#60;a href=&#8221;{umbraco.library:NiceUrl(current()/@id)}&#8221;&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;xsl:value-of select=&#8221;current()/@nodeName&#8221;/&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;/a&#62;&#60;/li&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;/xsl:for-each&#62;</span></p>
<p style="padding-left:30px;"><span style="color:#3366ff;">&#60;/ul&#62;</span></p>
</blockquote>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Transforming XML with XSLT in PHP]]></title>
<link>http://prabirchoudhury.wordpress.com/2009/10/15/transforming-xml-with-xslt-in-php/</link>
<pubDate>Thu, 15 Oct 2009 11:00:50 +0000</pubDate>
<dc:creator>Prabir Choudhury</dc:creator>
<guid>http://prabirchoudhury.wordpress.com/2009/10/15/transforming-xml-with-xslt-in-php/</guid>
<description><![CDATA[DOM object. DOM stands for the Document Object Model, and it&#8217;s a way of representing a documen]]></description>
<content:encoded><![CDATA[DOM object. DOM stands for the Document Object Model, and it&#8217;s a way of representing a documen]]></content:encoded>
</item>
<item>
<title><![CDATA[New Image Search and Catalogue Pages]]></title>
<link>http://paulingblog.wordpress.com/2009/10/09/new-image-search-and-catalogue-pages/</link>
<pubDate>Fri, 09 Oct 2009 19:45:18 +0000</pubDate>
<dc:creator>spcoll</dc:creator>
<guid>http://paulingblog.wordpress.com/2009/10/09/new-image-search-and-catalogue-pages/</guid>
<description><![CDATA[Continuing the theme from our last post, Redesigning our Web Presence, here is a closer look at how ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Continuing the theme from our last post, <a href="http://paulingblog.wordpress.com/2009/10/06/redesigning-our-web-presence/">Redesigning our Web Presence</a>, here is a closer look at how we built the new Image Search feature as well as what it takes to create the catalogue pages showing the detailed holdings of our collections.</p>
<p><strong><u>New Image Search Feature</u></strong></p>
<p>Our main web search feature, now on all of our pages, is provided by Oregon State&#8217;s campus search engine running the <a href="http://lucene.apache.org/nutch/">Nutch</a> software. This software works similar to Google and has web crawlers that find web pages and indexes them for searching. Each <a href="http://pauling.library.oregonstate.edu/">Documentary History website</a> and <a href="http://osulibrary.oregonstate.edu/specialcollections/coll/pauling/calendar/">Linus Pauling Day-by-Day</a> have a search box that limits results to the pages and items on only that site.</p>
<p>However, the main search feature on the <a href="http://osulibrary.oregonstate.edu/">OSU Libraries homepage</a> does not use the campus engine, and our websites and digital objects were not included. The Library&#8217;s search feature is powered by <a href="http://libraryfind.org/">LibraryFind</a>, built by a team at OSU using the <a href="http://rubyonrails.org/">Ruby on Rails</a> web application software. LibraryFind harvests and indexes many records and data sources, but does not crawl web pages. We needed to get our records harvested by and indexed into LibraryFind.</p>
<p>Since our digital object records are stored using the <a href="http://en.wikipedia.org/wiki/METS">METS</a> format with <a href="http://en.wikipedia.org/wiki/Metadata_Object_Description_Schema">MODS</a> metadata, it was fairly easy to convert this to <a href="http://en.wikipedia.org/wiki/Dublin_Core">Dublin Core</a> metadata, which can then be served up by an <a href="http://en.wikipedia.org/wiki/OAI-PMH">OAI-PMH</a> provider. LibraryFind then checks our OAI-PMH provider and harvests our digital object metadata for indexing into LibraryFind. Thanks to Terry Reese for his assistance on setting up the provider software and for his work on LibraryFind.</p>
<p>One piece of metadata that our METS records didn&#8217;t have that we needed to add was a URL where the digital object sits once it&#8217;s part of our Documentary History websites or Linus Pauling Day-by-Day. Our own scripts and stylesheets didn&#8217;t need this information, since they built the pages, but LibraryFind needed the URL to know where to provide a link to from search results that included our digital objects. This required adding:</p>
<pre class="brush: xml;">&#60;mods:location&#62;&#60;mods:url access=&#34;object in context&#34; displayLabel=&#34;Linus Pauling and the Race for DNA: A Documentary History. Pictures and Illustrations.&#34;&#62;
http://osulibrary.oregonstate.edu/specialcollections/coll/pauling/dna/pictures/1948i.61.html
&#60;/mods:url&#62;&#60;/mods:location&#62;</pre>
<p>as appropriate to our metadata files.</p>
<p>Now that our digital objects are harvested into LibraryFind, they are included in results for searches done from the <a href="http://osulibrary.oregonstate.edu/">Library&#8217;s homepage</a>. We can also limit the search results to just our materials, and by turning on the image results view, we get our new <a href="http://osulibrary.oregonstate.edu/specialcollections/image-search.html">Image Search</a> functionality. Now it is easy to search for digitized materials that are online, including photographs, scans of documents, and more.</p>
<div id="attachment_2676" class="wp-caption alignnone" style="width: 310px"><a href="http://paulingblog.wordpress.com/files/2009/10/screenshot-imagesearch.jpg"><img src="http://paulingblog.wordpress.com/files/2009/10/screenshot-imagesearch.jpg?w=300" alt="Image Search results, powered by LibraryFind" title="screenshot-imagesearch" width="300" height="210" class="size-medium wp-image-2676" /></a><p class="wp-caption-text">Image Search results, powered by LibraryFind</p></div>
<p>In the future, we plan to include more of our digital objects and increase support for complex items and multimedia files.</p>
<p><strong><u>Building Catalogue Pages from EAD</u></strong></p>
<p>Each of our collections are stored in <a href="http://en.wikipedia.org/wiki/Encoded_Archival_Description">Encoded Archival Description (EAD)</a> XML files, which include collection information as well as detailed catalogue listings for most of our collections. Often these descriptions go down to the item level, and there are varying levels and hierarchies in use, depending on what was appropriate for the material. The EAD files are processed by <a href="http://en.wikipedia.org/wiki/XSLT">XSLT</a> stylesheet files, similar to the rest of our website, and ideally we&#8217;d like to have a single set of files that can handle the different description levels and that we don&#8217;t have to tweak for specific collections. Here is a snippet of EAD XML for the Pauling Photographs series: </p>
<pre class="brush: xml;">
&#60;c02 level=&#34;file&#34;&#62;
&#60;did&#62;
&#60;container type=&#34;box&#34;&#62;1933i&#60;/container&#62;
&#60;unittitle&#62;Photographs and Images related to Linus Pauling, &#60;unitdate&#62;1933&#60;/unitdate&#62;.&#60;/unittitle&#62;
&#60;/did&#62;

&#60;c03 level=&#34;item&#34;&#62;
&#60;did&#62;
&#60;container type=&#34;folder&#34;&#62;1933i.1&#60;/container&#62;
&#60;unitid audience=&#34;internal&#34;&#62;1311&#60;/unitid&#62;
&#60;unittitle&#62;Linus Pauling at OSU (Oregon Agricultural College) to receive an honorary doctorate of science. Pictured from left are Dr. Marvin Gordon Neale, president of the University of Idaho, David C. Henny, Linus Pauling, Chancellor W. J. Kerr, and Charles A. Howard, state superintendent of public instruction in Oregon. June 5, 1933. &#34;LP at OSU (OAC) honorary doctorate 1933&#34; Photographer unknown. Black and white print courtesy of the Oregon State University Archives.&#60;/unittitle&#62;
&#60;unitdate&#62;1933&#60;/unitdate&#62;
&#60;/did&#62;
&#60;/c03&#62;

&#60;c03 level=&#34;item&#34;&#62;
&#60;did&#62;
&#60;container type=&#34;folder&#34;&#62;1933i.2&#60;/container&#62;
&#60;unittitle&#62;D.C. Henny, C.A. Howard and Linus Pauling. Linus Pauling receiving an honorary degree from Oregon Agricultural College. Print courtesy of the Oregon State University Archives. Photographer unknown. Black and white print.&#60;/unittitle&#62;
&#60;unitdate&#62;1933&#60;/unitdate&#62;
&#60;/did&#62;
&#60;/c03&#62;
</pre>
<p>Our previous setup for processing catalogues was heavily modified from older <a href="http://www.archivists.org/saagroups/ead/ead2002cookbookhelp.html">EAD Cookbook</a> stylesheet files and contained a large amount of custom code. One of the major sections we added was code that split up very large sections and box listings into separate web pages that were a reasonable size, instead of presenting hundreds of boxes or folders on each page. To accomplish this, the stylesheet used to first make a temporary file that built a high-level &#8216;menu&#8217; of the catalogue, which had a range for each page that was to be created. The rest of the stylesheet would then use this menu file to determine what pages to create, and searched over the whole collection for the IDs of the start and end of each page. This was complicated by the fact that some box IDs are not easy to compare numerically, such as &#8216;1954h3.4&#8242; or &#8216;NDi.2&#8242;. Usually the alphabetic characters were replaced with numbers or punctuation to facilitate comparing them against each other. This technique was not very efficient for large sections, and required lots of tweaking to be able to handle all the various box and folder IDs we have.</p>
<p>Also, separate stylesheet files had to be created to better handle the <a href="http://osulibrary.oregonstate.edu/specialcollections/coll/pauling/index.html">Pauling Papers</a> since it was so much larger than anything else, which meant that it was a pain to maintain features in both sets of stylesheet files. For the newer set of catalogue XSLT stylesheet files, we took a few different approaches.</p>
<p>First, a lot of redundant code was eliminated through the use of more XSLT matching templates. These allow you to write one set of formatting code and reuse it whenever an element appears. This made it easier to work around EAD&#8217;s flexibility for container lists, so a series or box would get processed the same no matter where it was in the encoded hierarchy. Here are some examples of the EAD matching templates:</p>
<pre class="brush: xml;">
&#60;xsl:template match=&#34;ead:unittitle&#34;&#62;
&#60;xsl:apply-templates/&#62;
&#60;xsl:if test=&#34;not(ends-with(., '.'))&#34;&#62;.&#60;/xsl:if&#62;
&#60;xsl:text&#62; &#60;/xsl:text&#62;
&#60;xsl:if test=&#34;following-sibling::ead:unittitle&#34;&#62;&#60;br/&#62;&#60;/xsl:if&#62;
&#60;/xsl:template&#62;

&#60;xsl:template match=&#34;ead:unitid[@type]&#34;&#62;
&#60;xsl:choose&#62;
&#60;xsl:when test=&#34;@type = 'isbn'&#34;&#62;
  &#60;a class=&#34;nowrap&#34; href=&#34;http://www.worldcat.org/search?q=isbn%3A{replace(., '-', '')}&#34; title=&#34;Look up this title in WorldCat&#34;&#62;&#60;xsl:value-of select=&#34;.&#34;/&#62;&#60;/a&#62;&#60;/xsl:when&#62;
&#60;xsl:when test=&#34;@type = 'oclc'&#34;&#62;
  &#60;a class=&#34;nowrap&#34; href=&#34;http://www.worldcat.org/search?q=no%3A{.}&#34; title=&#34;Look up this title in WorldCat&#34;&#62;&#60;xsl:value-of select=&#34;.&#34;/&#62;&#60;/a&#62;&#60;/xsl:when&#62;
&#60;xsl:when test=&#34;@type = 'lcc'&#34;&#62;
  &#60;a class=&#34;nowrap&#34; href=&#34;http://oasis.oregonstate.edu/search/c?SEARCH={replace(., ' ', '+')}&#34; title=&#34;Look up this title in the OSU Libraries' catalog&#34;&#62;&#60;xsl:value-of select=&#34;.&#34;/&#62;&#60;/a&#62;&#60;/xsl:when&#62;
&#60;xsl:when test=&#34;@type = 'gdoc'&#34;&#62;
  &#60;a class=&#34;nowrap&#34; href=&#34;http://oasis.oregonstate.edu/search/?searchtype=g&#38;amp;searcharg={replace(replace(., ' ', '+'), '/', '%2F')}&#34; title=&#34;Look up this title in the OSU Libraries' catalog&#34;&#62;&#60;xsl:value-of select=&#34;.&#34;/&#62;&#60;/a&#62;&#60;/xsl:when&#62;
&#60;xsl:otherwise&#62;&#60;xsl:value-of select=&#34;.&#34;/&#62;&#60;/xsl:otherwise&#62;
&#60;/xsl:choose&#62;
&#60;/xsl:template&#62;
</pre>
<p>Second, the code to break long sections into smaller pages for web display was redone, this time using the position of a box or item instead of the IDs. IDs are still used for display purposes, but the output is all based on position (such as 1-10, 11-20, etc.) This code is much cleaner since IDs are no longer directly compared. It&#8217;s also faster since it deals with the pages sequentially and doesn&#8217;t loop over the whole section every time a page is processed.</p>
<div id="attachment_2673" class="wp-caption alignnone" style="width: 310px"><a href="http://osulibrary.oregonstate.edu/specialcollections/coll/pauling/catalogue/pauling01_3_1-10.html"><img src="http://paulingblog.wordpress.com/files/2009/10/screenshot-catalogue.jpg?w=300" alt="Example of new catalogue page of Pauling Correspondence" title="screenshot-catalogue" width="300" height="276" class="size-medium wp-image-2673" /></a><p class="wp-caption-text">Example of new catalogue page of Pauling Correspondence</p></div>
<p>Third, instead of using HTML tables for the columns layout of catalogue pages, we switched to a CSS-based layout that approximates the look of columns and indents. This requires much less code in both the XSLT for processing and the output files.</p>
<p>Finally, all catalogues are processed by the same set of files, and separate ones for the Pauling Papers are no longer needed. This will enable us to make improvements faster, expanding our links to digital content and increasing the access options for our materials.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Back in the Saddle Again]]></title>
<link>http://matthewgraybosch.wordpress.com/2009/10/08/back-in-the-saddle-again/</link>
<pubDate>Thu, 08 Oct 2009 17:50:49 +0000</pubDate>
<dc:creator>matthewgraybosch</dc:creator>
<guid>http://matthewgraybosch.wordpress.com/2009/10/08/back-in-the-saddle-again/</guid>
<description><![CDATA[Here I am, blogging on my lunch break on my second day working for Conduit IT. I&#8217;ve already im]]></description>
<content:encoded><![CDATA[Here I am, blogging on my lunch break on my second day working for Conduit IT. I&#8217;ve already im]]></content:encoded>
</item>
<item>
<title><![CDATA[Xselerator]]></title>
<link>http://myfog.wordpress.com/2009/10/07/266/</link>
<pubDate>Wed, 07 Oct 2009 10:58:04 +0000</pubDate>
<dc:creator>myfog</dc:creator>
<guid>http://myfog.wordpress.com/2009/10/07/266/</guid>
<description><![CDATA[Sito: Xselerator Xselerator è un comodo validatore/trasformatore di xml e xsl.. Per essere free, è d]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="aligncenter size-thumbnail wp-image-267" title="xselerator" src="http://myfog.wordpress.com/files/2009/10/xselerator.jpg?w=150" alt="xselerator" width="150" height="150" /><br />
<span style="font-size:1.3em;">Sito: <a href="http://xselerator.sourceforge.net">Xselerator</a></span><br />
<img class="alignnone size-full wp-image-137" title="winxp_small" src="http://myfog.wordpress.com/files/2009/09/winxp_small.jpg" alt="winxp_small" width="30" height="28" /><br />
Xselerator è un comodo validatore/trasformatore di xml e xsl..<br />
<!--more--><br />
Per essere free, è davvero curato.. non esegue soltanto operazioni basilari come la trasformazione ma permette anche il debug dell&#8217;xsl e molto altro..</p>
<p>Al giorno d&#8217;oggi, con tutto Xml che gira, è uno strumento indispensabile <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Unemployed no more!]]></title>
<link>http://matthewgraybosch.wordpress.com/2009/10/05/unemployed-no-more/</link>
<pubDate>Mon, 05 Oct 2009 23:49:48 +0000</pubDate>
<dc:creator>matthewgraybosch</dc:creator>
<guid>http://matthewgraybosch.wordpress.com/2009/10/05/unemployed-no-more/</guid>
<description><![CDATA[YES!! I&#8217;ve got a new job. Last Thursday, I answered an ad on Craigslist for somebody who can d]]></description>
<content:encoded><![CDATA[YES!! I&#8217;ve got a new job. Last Thursday, I answered an ad on Craigslist for somebody who can d]]></content:encoded>
</item>
<item>
<title><![CDATA[XML-In-Practice Conference Notes, Day Two]]></title>
<link>http://xmlgeek.wordpress.com/2009/10/01/xml-in-practice-conference-notes-day-2/</link>
<pubDate>Thu, 01 Oct 2009 18:05:48 +0000</pubDate>
<dc:creator>xmlgeek</dc:creator>
<guid>http://xmlgeek.wordpress.com/2009/10/01/xml-in-practice-conference-notes-day-2/</guid>
<description><![CDATA[Started out on time, but Mills Davis had a lot to share and we went over.  Talking about the use of ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Started out on time, but Mills Davis had a lot to share and we went over.  Talking about the use of XML in research, publishing, databases, and future tools is somewhat comfortable, in that we have had these conversations before.  The tools change from year to year, but the requirements stay pretty close to the same.  We just need to go further every year.</p>
<p>eGovernment sessions, right now we are talking about publishing using DITA.  Now this is interesting. I need more information and have found lots of websites and also people who I can email or call when I have questions.  The training still needs to be done at my customers site.  They will not have success unless they start to understand what they are working with.</p>
<p>Some of the case studies I have seen this morning and yesterday actually feel kinda old, they don&#8217;t seem to use any of the new technologies.  Does this mean the new technologies don&#8217;t work?</p>
<p>And/Or is it possible, that these systems they are building don&#8217;t truly work!  Or don&#8217;t work well, and they are difficult to maintain or use?  I have real questions about this. Having been around for a true failure at my customer site, and watching the reasons unfold in front of me, I also think people tend to get in their own way when taking on projects like this.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Quick sketch]]></title>
<link>http://bibliosightnews.wordpress.com/2009/10/01/quick-sketch/</link>
<pubDate>Thu, 01 Oct 2009 12:10:24 +0000</pubDate>
<dc:creator>Nick</dc:creator>
<guid>http://bibliosightnews.wordpress.com/2009/10/01/quick-sketch/</guid>
<description><![CDATA[I&#8217;ve just had a meeting with Sue and Sam (from URO) about use cases.  It was useful, as always]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I&#8217;ve just had a meeting with Sue and Sam (from URO) about use cases.  It was useful, as always, to put our heads together and we came up with a quick sketch of a potential infrastructure for Bibliosight that we would like feedback on:</p>
<div id="attachment_263" class="wp-caption aligncenter" style="width: 567px"><a href="http://bibliosightnews.wordpress.com/files/2009/10/web-of-science.jpg"><img class="size-full wp-image-263" title="Web of Science" src="http://bibliosightnews.wordpress.com/files/2009/10/web-of-science.jpg" alt="A quick sketch" width="557" height="514" /></a><p class="wp-caption-text">A quick sketch</p></div>
<p>N.B.  This assumes it is possible to programmatically bulk upload XML records to EndNote &#8211; I have no idea if this is possible &#8211; and to intraLibrary which should be possible based on discussion at the meeting on Tuesday.</p>
<p>The sketch arose from the fact that research administrators currently use EndNote which they wish to continue using as dedicated citation management software for its high level functionality and the need to simplify their workflow rather than expect them to add records to two separate systems.  Such an approach could also inform our developing use cases to a) auto-populate the repository with metadata from WoS and b) alert repository/research administrators when an article is published so we can pursue an appropriate full text version for the repository.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[XML-In-Practice Conference Notes - Day One]]></title>
<link>http://xmlgeek.wordpress.com/2009/09/30/xml-in-practice-conference-note/</link>
<pubDate>Wed, 30 Sep 2009 13:39:18 +0000</pubDate>
<dc:creator>xmlgeek</dc:creator>
<guid>http://xmlgeek.wordpress.com/2009/09/30/xml-in-practice-conference-note/</guid>
<description><![CDATA[Sitting waiting for the first speaker at the conference (Clement McDonald, Lister Hill Center).  Lot]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Sitting waiting for the first speaker at the conference (Clement McDonald, Lister Hill Center).  Lots of people, some old familiar faces.  Really excited about the technical side of the conference.</p>
<p>First speaker is Medical HL7 XML&#8230;.not something I know a lot about.  Interesting, but not going to help me with my day to day work. Have you ever heard of Health Information Exchange &#8211; HIE? They want to be more efficient, to share data across systems, across insurance companies, across doctors.  My biggest concern would be the security of our data&#8230;.who is going to have access to this data?</p>
<p>Next speaker I am sitting in on is G. Ken Holman, my fellow colleague in UBL, he is still working with UBL and has actually spent many cycles working on the Code List issues.  I am going to talk to him about this later.</p>
<p>Ken&#8217;s talk is about&#8221;The problem being solved with markup.&#8221;  This is probably the wrong session for me to be sitting in on.  Very foundational stuff, what is XML, etc.  I know I can get something out of this&#8230;..UBL&#8230;&#8230;31 different business documents with a common vocabulary that is standardized and ready to use &#8211; YIPEE.  Did you know, in the country of Denmark, since 2005, you have to use XML, and, they are using UBL &#8211; Universal Business Language.  <a title="OASIS - UBL" href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ubl" target="_blank">http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ubl</a></p>
<p>Another issue that keeps coming to me, is how do I get my staff members up and running with some of these technologies?  I need them to learn XML, XSLT, XSL-FO, XPath, and XQuery.  Okay, so how, assuming they want to be XML &#8220;geeks&#8221;?</p>
<p>The discussion about DITA has been lively.  Some opinions say DITA is just another DocBook, and other opinions seem to say its better, its here and it works.  I remember clearly when DocBook came onto the scene and how excited people were about it.  I think they both have their place, and should be used according to need.</p>
<p>Traditional publishing models don&#8217;t work anymore.  You have to take into account how many different outputs you will need from your data and what it is going to take to get them.  Traditional publishing is slow and by the time you are printing, your data may be out of date. Getting output for online, print, CD/DVD for users offline, different websites with different purposes, and many more.</p>
<p>I want to hear less about what you think your company can do, and what you actually have done and is working&#8230;.</p>
<p>Tonight they are having a demo competition, everyone bring your laptops!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Pretty printing xhtml with nokogiri and xslt]]></title>
<link>http://emmanueloga.wordpress.com/2009/09/29/pretty-printing-xhtml-with-nokogiri-and-xslt/</link>
<pubDate>Tue, 29 Sep 2009 04:06:30 +0000</pubDate>
<dc:creator>emmanueloga</dc:creator>
<guid>http://emmanueloga.wordpress.com/2009/09/29/pretty-printing-xhtml-with-nokogiri-and-xslt/</guid>
<description><![CDATA[Today I was looking for a way to pretty print xhtml. Good&#8217;ol REXML supports this in a very sim]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Today I was looking for a way to pretty print xhtml. Good&#8217;ol REXML supports this in a very simple way:</p>
<pre class="brush: ruby;">
Document.new(&#34;&#60;some&#62;XML&#60;/some&#62;&#34;)doc.write($stdout, indent_spaces = 4)
</pre>
<p>This generates a nicely indented xml document. But REXML was not robust enough for my needs. Luckily, we now have a couple of excellent choices on ruby for parsing xml, including <a href="http://github.com/whymirror/hpricot">hpricot</a>, <a href="http://nokogiri.rubyforge.org/nokogiri/">nokogiri</a> and <a href="http://libxml.rubyforge.org/">libxml-ruby bindings</a>.</p>
<p>I did not find a way to pretty print xhtml as easy as you can do with REXML with any of these libraries, though. But I did find a way of doing it using XSLT. Nokogiri supports applying XSLT to an XML document (probably libxml bindings do too, hpricot does not). Here is how:</p>
<pre class="brush: ruby;">
    xsl = Nokogiri::XSLT(&#34;pretty_print.xsl&#34;)
   html = Nokogiri(File.read(&#34;source.html&#34;))
   File.open(&#34;output.html&#34;, &#34;w&#34;) { &#124;f&#124; f &#60;&#60; xsl.apply_to(html).to_s }
</pre>
<p>That&#8217;s it, simple enough. Got the idea from <a href="http://snippets.dzone.com/posts/show/4953">this dzone snippet</a>.</p>
<p>For the xslt file I used this nice one I found on this site:<a href="http://www.printk.net/~bds/indent.html"> http://www.printk.net/~bds/indent.html</a></p>
<pre class="brush: xml;">
&#60;xsl:stylesheet version=&#34;1.0&#34; xmlns:xsl=&#34;http://www.w3.org/1999/XSL/Transform&#34;&#62;
  &#60;xsl:output method=&#34;xml&#34; encoding=&#34;ISO-8859-1&#34;/&#62;
  &#60;xsl:param name=&#34;indent-increment&#34; select=&#34;'   '&#34;/&#62;

  &#60;xsl:template name=&#34;newline&#34;&#62;
    &#60;xsl:text disable-output-escaping=&#34;yes&#34;&#62;
&#60;/xsl:text&#62;
  &#60;/xsl:template&#62;

  &#60;xsl:template match=&#34;comment() &#124; processing-instruction()&#34;&#62;
    &#60;xsl:param name=&#34;indent&#34; select=&#34;''&#34;/&#62;
    &#60;xsl:call-template name=&#34;newline&#34;/&#62;
    &#60;xsl:value-of select=&#34;$indent&#34;/&#62;
    &#60;xsl:copy /&#62;
  &#60;/xsl:template&#62;

  &#60;xsl:template match=&#34;text()&#34;&#62;
    &#60;xsl:param name=&#34;indent&#34; select=&#34;''&#34;/&#62;
    &#60;xsl:call-template name=&#34;newline&#34;/&#62;
    &#60;xsl:value-of select=&#34;$indent&#34;/&#62;
    &#60;xsl:value-of select=&#34;normalize-space(.)&#34;/&#62;
  &#60;/xsl:template&#62;

  &#60;xsl:template match=&#34;text()[normalize-space(.)='']&#34;/&#62;

  &#60;xsl:template match=&#34;*&#34;&#62;
    &#60;xsl:param name=&#34;indent&#34; select=&#34;''&#34;/&#62;
    &#60;xsl:call-template name=&#34;newline&#34;/&#62;
    &#60;xsl:value-of select=&#34;$indent&#34;/&#62;
      &#60;xsl:choose&#62;
       &#60;xsl:when test=&#34;count(child::*) &#62; 0&#34;&#62;
        &#60;xsl:copy&#62;
         &#60;xsl:copy-of select=&#34;@*&#34;/&#62;
         &#60;xsl:apply-templates select=&#34;*&#124;text()&#34;&#62;
           &#60;xsl:with-param name=&#34;indent&#34; select=&#34;concat ($indent, $indent-increment)&#34;/&#62;
         &#60;/xsl:apply-templates&#62;
         &#60;xsl:call-template name=&#34;newline&#34;/&#62;
         &#60;xsl:value-of select=&#34;$indent&#34;/&#62;
        &#60;/xsl:copy&#62;
       &#60;/xsl:when&#62;
       &#60;xsl:otherwise&#62;
        &#60;xsl:copy-of select=&#34;.&#34;/&#62;
       &#60;/xsl:otherwise&#62;
     &#60;/xsl:choose&#62;
  &#60;/xsl:template&#62;
&#60;/xsl:stylesheet&#62;
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[SharePoint Internal Data Types - Reference]]></title>
<link>http://abstractspaces.wordpress.com/2009/09/28/sharepoint-internal-data-types-reference/</link>
<pubDate>Mon, 28 Sep 2009 12:45:48 +0000</pubDate>
<dc:creator>sanghvinirav</dc:creator>
<guid>http://abstractspaces.wordpress.com/2009/09/28/sharepoint-internal-data-types-reference/</guid>
<description><![CDATA[Sharepoint supports different types of columns, this column types are reffered as following data typ]]></description>
<content:encoded><![CDATA[Sharepoint supports different types of columns, this column types are reffered as following data typ]]></content:encoded>
</item>
<item>
<title><![CDATA[XQilla Project - XSLT 2.0 and XPath 2.0 for C++]]></title>
<link>http://dmaggot.wordpress.com/2009/09/22/xqilla-project-xslt-2-0-and-xpath-2-0-for-c/</link>
<pubDate>Tue, 22 Sep 2009 22:30:39 +0000</pubDate>
<dc:creator>dmaggot</dc:creator>
<guid>http://dmaggot.wordpress.com/2009/09/22/xqilla-project-xslt-2-0-and-xpath-2-0-for-c/</guid>
<description><![CDATA[When it comes down to XML, everybody knows Java is one of the most powerful programming languages to]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>When it comes down to XML, everybody knows Java is one of the most powerful programming languages to deal with this format. The Java XML API, the documentation and the size of projects such as <a href="http://xerces.apache.org/xerces-j/" target="_blank">Xerces</a>, <a href="http://xerces.apache.org/xerces-j/" target="_blank">Xalan</a> and <a href="http://saxon.sourceforge.net/" target="_blank">Saxon</a> make Java an excellent option to work with XML. But then again, I&#8217;m not a Java programmer and I love C++ <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>I recently had to code a little project to simulate an automaton for a programming language. I used the <a href="http://dmaggot.wordpress.com/2009/08/23/defining-automatas-with-xml/" target="_blank">FSMXML </a>project to define the automaton, so I needed a good library to deal with XPath on C++. As I mentioned in my previous post, I discovered I needed XPath 2.0 for some queries, so on I went to find an XPath 2.0 library fo C++, since <a href="http://xml.apache.org/xalan-c/" target="_blank">Xalan-C</a>, as its Java counterpart, only supports version 1.0 of the specification.</p>
<p>I googled around and came accross <a href="http://xqilla.sourceforge.net" target="_blank">XQilla</a> which is an XQuery and XPath 2 library based on <a href="http://xerces.apache.org/xerces-c/" target="_blank">Xerces-C</a>. It looked like something I could use for my project, so I searched a Sabayon package for that, but found none. I searched then for a Gentoo package for it, and even though I found one, there was something terribly wrong with it, which I didn&#8217;t fully understand&#8230; I think it was still on testings or something, but the thing is one of the versions was hard masked and the other needed a Xerces-C version I couldn&#8217;t install for some reason I don&#8217;t remember. But I still wanted to try the project out, so I downloaded the sources and built the libraries successfully without problems, except for a weird <code>--with-xerces=/usr</code> configuration option I had to add for the configure script to find Xerces-C headers (shouldn&#8217;t it default to <code>/usr/include</code>?). After a good amount of compile time (864 binary files outputted on the main directory) I had my working XPath 2 C++ library and I started using it by taking a look at the examples provided at the project&#8217;s homepage.</p>
<p>After understanding the modus-operandi of this library, I started incorporating it into my program. One API design I remember I immediately questioned was regarding these lines of code:</p>
<p><code>AutoRelease&#60;DOMXPathExpression&#62; expressionKeywords(document-&#62;createExpression(X("language/keywords/keyword/@name"), 0));<br />
AutoRelease&#60;DOMXPathResult&#62; resultKeywords(expressionKeywords-&#62;evaluate(document, DOMXPathResult::ITERATOR_RESULT_TYPE, 0));</code></p>
<p>Here, <code>document</code> is declared as a <code>DOMDocument</code>. I wondered why, if I created the expression in the first line from the document itself, I had to pass the document again as an argument to the <code>evaluate</code> function. A few days later I discovered an answer for that: the <code>DOMDocument</code> object is the only one capable of creating an expression, but what if you want to apply the expression in the context of an internal node and not the document itself? That&#8217;s what the argument passed to the <code>evaluate</code> function indicates, as shown in these lines of code</p>
<p><code>AutoRelease&#60;DOMXPathExpression&#62; expressionMonoid(document-&#62;createExpression(X("n:label/n:monElmt/n:monGen/@value"), fsmxmlNamespace));<br />
AutoRelease&#60;DOMXPathResult&#62; resultMonoid(expressionMonoid-&#62;evaluate(resultTransitions-&#62;getNodeValue(), DOMXPathResult::ITERATOR_RESULT_TYPE, 0));</code></p>
<p>Here, the expression created by the <code>document</code> object was evaluated using the <code>resultTransitions</code> <code>DOMNode</code> value as the context, which is exactly what I wanted to do.</p>
<p>One other trick I learned about XQilla (which may actually be regarded as a Xerces-C issue) was that it wouldn&#8217;t work if your XML Schema Definition was on a remote location and you had no internet because, of course, of validation problems. To avoid this, you must disable both <code>XercesSchema</code> and <code>DOMValidateIfSchema</code> options in your parser, as shown in the following lines</p>
<p><code>parser-&#62;getDomConfig()-&#62;setParameter(XMLUni::fgDOMNamespaces, true);<br />
parser-&#62;getDomConfig()-&#62;setParameter(XMLUni::fgXercesSchema, false);<br />
parser-&#62;getDomConfig()-&#62;setParameter(XMLUni::fgDOMValidateIfSchema, false);</code></p>
<p>I haven&#8217;t tested the XQuery capabilities of this library, but if you are going to use XSLT 2 in your C++, I can highly recommend this project.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[User Interfacing with XSLT]]></title>
<link>http://joelstevick.wordpress.com/2009/11/15/user-interfaces/</link>
<pubDate>Sun, 15 Nov 2009 14:29:54 +0000</pubDate>
<dc:creator>Joel Stevick</dc:creator>
<guid>http://joelstevick.wordpress.com/2009/11/15/user-interfaces/</guid>
<description><![CDATA[If you feel that you must completely refactor an application so that the data model is cleanly seper]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>If you feel that you must completely refactor an application so that the data model is cleanly seperated from the presentation, then you <em>can</em> use the XML-related technologies for this. You should use XSLT (expresses rules for how to convert XML data into something else like HTML content) to achieve this.</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
