<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUQFSXw5fCp7ImA9WhVUEEU.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478</id><updated>2012-05-15T09:08:38.224-04:00</updated><category term="DBTA" /><category term="data integration" /><category term="FOP" /><category term="Visual Studio" /><category term="XML publishing" /><category term="directory comparison" /><category term="MetaTeam" /><category term="localization" /><category term="v2011r2" /><category term="v2009" /><category term="MapForce" /><category term="Open XML" /><category term="v2012" /><category term="Jolt Award" /><category term="DatabaseSpy" /><category term="DiffDog" /><category term="MDA" /><category term="XBRL training" /><category term="Tech Ed" /><category term="XBRL charts" /><category term="IBM DB2" /><category term="Oracle OpenWorld" /><category term="reporting tool" /><category term="Chinese language version" /><category term="MissionKit" /><category term="database to xml" /><category term="xpath" /><category term="v2008" /><category term="video" /><category term="v2011r3" /><category term="v2012r2" /><category term="xml to database" /><category term="renewable energy" /><category term="XML Schema" /><category term="v2011" /><category term="code generation" /><category term="XML charts" /><category term="software reviews" /><category term="single source publishing" /><category term="XSLT" /><category term="v2010" /><category term="64-bit" /><category term="Version 2011" /><category term="PDF" /><category term="ComponentSource" /><category term="Altova events" /><category term="UML" /><category term="TrueType" /><category term="Altova XMLSpy" /><category term="software tools" /><category term="cloud" /><category term="learn xml" /><category term="National Frozen Foods" /><category term="service pack" /><category term="v2010r3" /><category term="database charts" /><category term="NIEM" /><category term="UModel" /><category term="WebDav" /><category term="Eclipse" /><category term="FlowForce Server" /><category term="altova support" /><category term="Altova" /><category term="legacy data" /><category term="MACPA" /><category term="Blog" /><category term="Altova Online Training" /><category term="education" /><category term="Twitter" /><category term="database reports" /><category term="Microsoft" /><category term="data mapping" /><category term="ETL" /><category term="Award" /><category term="XBRL" /><category term="SQL Server" /><category term="demo videos" /><category term="Connections" /><category term="Model Driven Architecture" /><category term="SD Times" /><category term="reverse engineering" /><category term="chained transformations" /><category term="altova product review" /><category term="file comparison" /><category term="altova product upgrades" /><category term="Oracle" /><category term="multi-channel publishing" /><category term="SOA" /><category term="JavaOne" /><category term="EPUB" /><category term="XSL:FO" /><category term="new features" /><category term="WSDL" /><category term="FOSE" /><category term="XQuery" /><category term="Programmer's Paradise" /><category term="diff merge tool" /><category term="LANSA" /><category term="user interface" /><category term="technology books" /><category term="DevConnections" /><category term="German" /><category term="agile development" /><category term="Visual Basic" /><category term="Authentic scripting" /><category term="Authentic" /><category term="JSON" /><category term="HTML5" /><category term="database tool" /><category term="price reduction" /><category term="charts" /><category term="cloud services" /><category term="MusicXML" /><category term="team collaboration" /><category term="Office" /><category term="HL7" /><category term="Recordare" /><category term="software modeling" /><category term="tradeshows" /><category term="SharePoint" /><category term="Jolt Awards" /><category term="xml reports" /><category term="Sybase" /><category term="Web services" /><category term="XMLSpy" /><category term="Java" /><category term="SMP" /><category term="API" /><category term="SOAP" /><category term="C#" /><category term="EDI" /><category term="HTML editor" /><category term="SchemaAgent" /><category term="StyleVision" /><category term="CSS3" /><category term="PDC" /><category term="SD Times 100" /><category term="v2010r2" /><category term="Japanese Versions" /><category term="BPMN" /><category term="UML tool" /><category term="PDC08" /><category term="XML Editor" /><category term="project management" /><category term="Windows IT Pro" /><category term="Case Study" /><category term="WSDL 2.0" /><category term="FlexText" /><title>Altova Blog</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.altova.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.altova.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>XML Aficionado</name><uri>http://www.blogger.com/profile/01835657544617220110</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_KDgXmlITJmY/SWI3mdczieI/AAAAAAAAASs/neqRiX2_omQ/S220/Aficionado_cartoon.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>208</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Altova" /><feedburner:info uri="altova" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>42.558413</geo:lat><geo:long>-70.88733</geo:long><logo>http://www.altova.com/images/logos/altova_right_120.gif</logo><entry gd:etag="W/&quot;DUQFSXw9eCp7ImA9WhVUEEU.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-7685178182212732430</id><published>2012-05-15T09:07:00.000-04:00</published><updated>2012-05-15T09:08:38.260-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-15T09:08:38.260-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MetaTeam" /><category scheme="http://www.blogger.com/atom/ns#" term="project management" /><category scheme="http://www.blogger.com/atom/ns#" term="team collaboration" /><title>Introducing MetaTeam!</title><content type="html">&lt;h5&gt;



&lt;span style="font-size: small;"&gt;Cloud-based Team Collaboration and Project Management&lt;/span&gt;&lt;/h5&gt;
&lt;i&gt;&lt;/i&gt;&lt;br /&gt;
Today we are very excited to announce a brand new addition to the Altova product portfolio! MetaTeam® is an elegant, cloud-based collection of collaboration tools that is unlike any project management solution you’ve seen before. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/-EKusoVo9dUU/T7FVxG2SuvI/AAAAAAAAAKk/5W9p3wG4C5g/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img alt="clip_image001" border="0" height="125" src="http://lh4.ggpht.com/-K4XqB9AvuSM/T7FVyJdKfTI/AAAAAAAAAKs/ioMfuSTbrNk/clip_image001_thumb.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image001" width="610" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;h3&gt;



MetaTeam is Different. &lt;/h3&gt;
&lt;a href="http://metateam.net/"&gt;MetaTeam&lt;/a&gt; is designed with teams in mind, because &lt;i&gt;people – &lt;/i&gt;not spreadsheets or file servers or charts – are the most important factor in any successful project. Unlike other collaboration and project management tools, MetaTeam provides a framework that encourages team work and creates a sense of ownership among all project stakeholders, not just project managers. &lt;br /&gt;
The reason MetaTeam is different is because today’s teams are different. They’re increasingly virtual, distributed across departments and often across continents and time zones. This presents complex challenges from different working hours, to different hardware platforms, to different levels of project-related knowledge and terminology. &lt;a href="http://lh5.ggpht.com/-KfnSPZQTN5M/T7FV9HPbi1I/AAAAAAAAAK0/_5-Uqf0hwsM/s1600-h/clip_image002%25255B3%25255D.png"&gt;&lt;img align="right" alt="clip_image002" border="0" height="130" hspace="12" src="http://lh5.ggpht.com/-Pu4GAuP4uFY/T7FV9QSG5MI/AAAAAAAAAK4/PzFZ9877drE/clip_image002_thumb.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; float: right; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image002" width="178" /&gt;&lt;/a&gt;&lt;br /&gt;
MetaTeam removes these barriers, empowering teams to communicate, collaborate, and deliver results – together, in an organized way. &lt;br /&gt;
Because &lt;a href="http://metateam.net/"&gt;MetaTeam&lt;/a&gt; is cloud-based, it’s accessible to you and your teammates 24x7, no matter where you're located. There’s nothing to download, and no infrastructure costs.&lt;br /&gt;
The clean, intuitive MetaTeam interface offers integrated apps for managing to-dos, team member roles and responsibilities, project-specific terms and documentation, structured decision making, team member information, and more. Threaded discussions and customizable email alerts foster communication and clarity.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;



Try MetaTeam&lt;/h3&gt;
&lt;a href="http://metateam.net/"&gt;MetaTeam&lt;/a&gt; is currently in public beta, and access is free to all. And though our existing customers will find MetaTeam extremely useful, MetaTeam is not just for technical users! Teams in any capacity can access its powerful tools to enhance efficiency in managing projects of any kind.&lt;br /&gt;
Check out our short intro video, and then sign up (it’s free!) to &lt;a href="http://metateam.net/"&gt;try&lt;/a&gt; MetaTeam for yourself!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:fe6d4846-d61c-419b-a861-83858d391e28" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;
&lt;div id="63f47f64-0e82-4ef8-a1d4-5419464903fc" style="display: inline; margin: 0px; padding: 0px;"&gt;
&lt;div&gt;
&lt;a href="http://www.youtube.com/watch?v=yzigR7p6G1Y&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img alt="" galleryimg="no" onload="var downlevelDiv = document.getElementById('63f47f64-0e82-4ef8-a1d4-5419464903fc'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;336\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/yzigR7p6G1Y?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/yzigR7p6G1Y?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;336\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" src="http://lh6.ggpht.com/-UP0_9eccE_E/T7FV9tkK4VI/AAAAAAAAALA/y1619zdnJhY/video6e001302a038%25255B14%25255D.jpg?imgmax=800" style="border-style: none;" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="clear: both; font-size: .8em; width: 448px;"&gt;
MetaTeam Introduction&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-7685178182212732430?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/hVOnhzE81hs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/7685178182212732430/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=7685178182212732430" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/7685178182212732430?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/7685178182212732430?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/hVOnhzE81hs/introducing-metateam.html" title="Introducing MetaTeam!" /><author><name>Erin Cavanaugh</name><uri>http://www.blogger.com/profile/05488702872055566047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_C4xYMtGRX-M/SYie9G7vVdI/AAAAAAAAABE/7MnFXMC-iy8/S220/Erin.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-K4XqB9AvuSM/T7FVyJdKfTI/AAAAAAAAAKs/ioMfuSTbrNk/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/05/introducing-metateam.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UBR3g4eSp7ImA9WhVWGUo.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-6802894662573324019</id><published>2012-04-30T12:05:00.001-04:00</published><updated>2012-05-02T11:07:36.631-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-02T11:07:36.631-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="StyleVision" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="MissionKit" /><category scheme="http://www.blogger.com/atom/ns#" term="data integration" /><title>Resist Data Integration Redundancy</title><content type="html">&lt;p&gt;The Internet makes massive amounts of data available for lots of interesting applications. But whenever you design a unique analysis and presentation of information you don’t privately control, you risk that the owner will offer the same view at some point in the future, instantly making your application redundant.&lt;/p&gt;  &lt;p&gt;That’s exactly what happened to the Groupon API data-mining project we originally wrote about in &lt;a href="http://blog.altova.com/2011/08/processing-groupon-api-with-altova.html"&gt;August, 2011&lt;/a&gt;. Fortunately, the core of our project is a &lt;a href="http://www.altova.com/mapforce/mapping-interface.html"&gt;MapForce graphical data mapping&lt;/a&gt;. We can quickly and easily tweak the mapping and repurpose it to present an entirely different data set that provides new value.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="HTML output from MapForce and StyleVision" border="0" alt="HTML output from MapForce and StyleVision" src="http://lh4.ggpht.com/-Cljb05Xyph0/T5638l3TgOI/AAAAAAAAAzY/e2ZOHUuYI18/clip_image001%25255B1%25255D.png?imgmax=800" width="566" height="234" /&gt;&lt;/p&gt;    &lt;a name='more'&gt;&lt;/a&gt;    &lt;p&gt;Our project initially began when we noticed Groupon deals only offered in a few individual locations that could actually be redeemed over the Web for physical merchandise to be shipped almost anywhere.&lt;/p&gt;  &lt;p&gt;We used MapForce to query the Groupon API for all offers from every Groupon location, we filtered out the offers classified as online deals, and we presented them in an HTML page elegantly formatted by Altova &lt;a href="http://www.altova.com/stylevision.html"&gt;StyleVision&lt;/a&gt; for desktop and mobile devices.&lt;/p&gt;  &lt;p&gt;The new Goods tab recently added to the top of the Groupon Web page makes our original data mapping completely redundant, since it offers immediate access to items for sale online from many locations.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Groupon Menu Bar" border="0" alt="Groupon Menu Bar" src="http://lh6.ggpht.com/-orkQDLNQCSY/T563-EVvRvI/AAAAAAAAAzc/yA-Y-iOqQIA/clip_image003%25255B1%25255D.png?imgmax=800" width="624" height="65" /&gt;&lt;/p&gt;  &lt;p&gt;Even worse, since most of the same goods are offered in nearly every Groupon location, our mapping output now generates dozens of duplicates.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Repurpose the Application&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Thinking at a more meta level, the justification for our original project is still valid: Groupon organizes and displays deals based on a geographical query, but there are instances where a deal is more attractive than the location. For example, a trip to Allentown, Pennsylvania might not be on your bucket list, but what if you knew about a Groupon deal to drive a Ferrari, Lamborghini, or Aston Martin five or ten laps around the Pocono Racetrack for half the usual price? &lt;/p&gt;  &lt;p&gt;The Ferrari offer isn’t an Online Deal, so it’s not listed under the Goods tab, nor is it selected by our MapForce data mapping. As a new target for our mapping design, let’s collect all Groupon offers from all locations that are NOT classified as Online Deals. There are probably lots of interesting things to do in places that might not immediately spring to mind.&lt;/p&gt;  &lt;p&gt;Here’s the section of our original data mapping that filtered the data response from the API to select Online Deals:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MapForce mapping selects Online deals" border="0" alt="MapForce mapping selects Online deals" src="http://lh5.ggpht.com/-Ptb0HXebrqc/T563-k1EN7I/AAAAAAAAAzg/CIcr6nH_yfk/clip_image004%25255B1%25255D.png?imgmax=800" width="605" height="281" /&gt;&lt;/p&gt;  &lt;p&gt;The contains function in the center of the screenshot checks to see if an element called &amp;lt;redemptionLocation&amp;gt; in the deal description contains the word Online, indicating an online deal. The deal is passed along for further processing only if the result is true.&lt;/p&gt;  &lt;p&gt;The logical-and function at the top right combines online deals with a test of the element called &amp;lt;isSoldOut&amp;gt; to select only the offers that are still available ( &amp;lt;isSoldOut&amp;gt; = false).&lt;/p&gt;  &lt;p&gt;We can very easily reverse the set of collected data by inserting a logical-not function after the contains function. The new mapping selects all deals that do NOT contain Online in the &amp;lt;redemptionLocation&amp;gt; element.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MapForce mapping selects NOT Online deals" border="0" alt="MapForce mapping selects NOT Online deals" src="http://lh3.ggpht.com/-l13YN4e-Ato/T563_kIuLDI/AAAAAAAAAzk/XGsRLiOmeR4/clip_image005%25255B1%25255D.png?imgmax=800" width="605" height="282" /&gt;&lt;/p&gt;  &lt;p&gt;Since the structure of the data does not change, only the content, we don’t have to do anything else before executing the new version of the mapping. Here is a portion of the XML output showing the Ferrari deal:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Portion of MapForce XML Output" border="0" alt="Portion of MapForce XML Output" src="http://lh5.ggpht.com/-dp5HsRJow_0/T564AKiKGLI/AAAAAAAAAzo/eHry_7Ow_vo/clip_image006%25255B1%25255D.png?imgmax=800" width="585" height="322" /&gt;&lt;/p&gt;  &lt;p&gt;We could take this output file and immediately process it through StyleVision using our original stylesheet to create an HTML document, but while we’re in MapForce, let’s add two more enhancements.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Remove Duplicate Data&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We are still getting some duplicates in the new results because the same deals are frequently offered in multiple neighborhoods of large cities. One of the samples installed with MapForce is a mapping called DistinctArticles.mfd that demonstrates how to remove duplicates from an input stream where XML nodes contain repeated data.&lt;/p&gt;  &lt;p&gt;We can easily copy the design from the example to our Groupon mapping:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MapForce removes XML nodes with duplicate content" border="0" alt="MapForce removes XML nodes with duplicate content" src="http://lh5.ggpht.com/-kNbDk_pMp9M/T564A1OHw9I/AAAAAAAAAzs/YuYcMlJFKpc/clip_image007%25255B1%25255D.png?imgmax=800" width="604" height="286" /&gt;&lt;/p&gt;  &lt;p&gt;The &amp;lt;title&amp;gt; element functions as a unique key to identify duplicate deals, and the compute-when variable sends only the first copy for further processing.&lt;/p&gt;  &lt;p&gt;Of course we can also apply this de-duplication strategy to the original mapping of Online deals, to find out if the Goods tab for one location really offers all the Online deals out there. (It doesn’t.)&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Data Sorting&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A new feature added to MapForce 2012 Release 2 allows us to sort the data before it reaches the output file. Here is the section of the mapping that sorts first by division names, which are the Groupon locations for deals, then by the deal title within each location.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Data sorting in MapForce" border="0" alt="Data sorting in MapForce" src="http://lh4.ggpht.com/-aGsc77JuG5U/T564BtdPWcI/AAAAAAAAAzw/xYktjaMw2t0/clip_image008%25255B1%25255D.png?imgmax=800" width="530" height="333" /&gt;&lt;/p&gt;  &lt;p&gt;Now we can process the completed mapping and generate an HTML document by transforming the XML output file with our original StyleVision stylesheet:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="HTML output transformed by StyleVision" border="0" alt="HTML output transformed by StyleVision" src="http://lh6.ggpht.com/-TbYmj47yh6A/T564CQgaXHI/AAAAAAAAAz0/7EJajx0u_KQ/clip_image009%25255B1%25255D.png?imgmax=800" width="495" height="655" /&gt;&lt;/p&gt;  &lt;p&gt;Maybe we can even get a deal on a tasty Italian snack after driving a fast Italian car!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;MapForce, and StyleVision are all available together in the specially priced Altova MissionKit. See for yourself how easy it is to use the MissionKit to integrate data from a Web API -- &lt;/b&gt;&lt;a href="http://www.altova.com/download/missionkit/software_development_tools_enterprise.html"&gt;&lt;b&gt;download a free 30-day trial!&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-6802894662573324019?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/-3Ol36maQrw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/6802894662573324019/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=6802894662573324019" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/6802894662573324019?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/6802894662573324019?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/-3Ol36maQrw/resist-data-integration-redundancy.html" title="Resist Data Integration Redundancy" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-Cljb05Xyph0/T5638l3TgOI/AAAAAAAAAzY/e2ZOHUuYI18/s72-c/clip_image001%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/04/resist-data-integration-redundancy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YFRXoyfip7ImA9WhVWGUo.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-5463527015695845345</id><published>2012-04-17T09:25:00.001-04:00</published><updated>2012-05-02T11:05:14.496-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-02T11:05:14.496-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="StyleVision" /><category scheme="http://www.blogger.com/atom/ns#" term="charts" /><category scheme="http://www.blogger.com/atom/ns#" term="xpath" /><category scheme="http://www.blogger.com/atom/ns#" term="localization" /><title>XPath Enhances XML Reports</title><content type="html">&lt;p&gt;In our previous post on &lt;a href="http://blog.altova.com/2012/04/creating-elegant-reports-for-gps-xml.html"&gt;Creating Elegant Reports for GPS XML Data&lt;/a&gt; we used an XPath expression to select nodes from an XML document for an elevation line chart. You can also use XPath to compute values. &lt;a href="http://www.altova.com/stylevision.html"&gt;Altova StyleVision&lt;/a&gt; includes strong support for XPath, and we can write XPath expressions to add interesting information to our GPS XML reports. For instance, we can process the elevation data stored by the GPS device in meters to plot a chart showing the elevation in feet above sea level instead.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Altova StyleVision line chart" border="0" alt="Altova StyleVision line chart" src="http://lh5.ggpht.com/-gSbmsmf1ZRY/T6FNDIQzqkI/AAAAAAAAAyg/1u_NWXO1IlM/clip_image001%25255B1%25255D.png?imgmax=800" width="540" height="360" /&gt;&lt;/p&gt;    &lt;a name='more'&gt;&lt;/a&gt;    &lt;p&gt;The conversion formula for meters to feet is (meters x 3.2808399) = feet. We can apply this calculation in the Chart Configuration dialog:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Chart configuration dialog" border="0" alt="Chart configuration dialog" src="http://lh5.ggpht.com/-BLVFqzxZ6r8/T41tBu4ZQMI/AAAAAAAAAyo/L-Klq3KV-E8/clip_image002%25255B1%25255D.png?imgmax=800" width="610" height="670" /&gt;.&lt;/p&gt;  &lt;p&gt;Now the chart will be drawn using the results of the calculation performed on data retrieved from the source file.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;XPath Time Functions&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;You may have noticed our chart does not include a definition of the X-axis scale. We deliberately eliminated tick marks and values from the X-axis because GPS devices store trackpoint information every few seconds. The file for the ice-climbing hike has more than 1,800 elevation data points and the sheer volume of data points created a series of tick marks that merged into a solid line! There wasn’t enough room for the values text either.&lt;/p&gt;  &lt;p&gt;But wouldn’t it be interesting to know how long the hike took? We can insert that fact into our report by taking advantage of StyleVision Auto-Calculation. The portion of the design below shows three Auto-Calculation elements added to the report via the Insert / Auto-Calculation / Value menu option and enhanced with descriptive text.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision AutoCalc elements" border="0" alt="StyleVision AutoCalc elements" src="http://lh5.ggpht.com/-uXZIbSXcnbw/T41tCgrdCqI/AAAAAAAAAys/4EJATOgpRFI/clip_image003%25255B1%25255D.png?imgmax=800" width="556" height="256" /&gt;&lt;/p&gt;  &lt;p&gt;Right-clicking any Auto-Calculation element opens a menu that provides access to the Edit XPath dialog illustrated below in reduced size. You can type an XPath expression directly into the window, or construct one by choosing from the Element, Operator, and Functions lists.&lt;/p&gt;  &lt;p&gt;To calculate the elapsed time for the trip we can use the XPath functions max(anyAtomicType) and min(anyAtomicType) with XPath expressions for the &amp;lt;time&amp;gt; elements for each trackpoint to find the earliest and latest times recorded in the track. We can subtract the earliest time from the latest time to calculate the elapsed time.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision XPath edit dialog" border="0" alt="StyleVision XPath edit dialog" src="http://lh4.ggpht.com/-6far6GBn_X0/T41tDmS8KpI/AAAAAAAAAyw/y3OtXvCrqRc/clip_image004%25255B1%25255D.png?imgmax=800" width="600" height="450" /&gt;&lt;/p&gt;  &lt;p&gt;Another selection in the Auto-Calculation right-click menu opens the Value Formatting dialog for instant access to a variety of formats appropriate for the data type of the calculation result.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision Value Formatting dialog for AutoCalc result" border="0" alt="StyleVision Value Formatting dialog for AutoCalc result" src="http://lh6.ggpht.com/-kH8H4z9bW6Q/T41tEVMLc7I/AAAAAAAAAy0/NaG1nrLMQZY/clip_image005%25255B1%25255D.png?imgmax=800" width="486" height="371" /&gt;&lt;/p&gt;  &lt;p&gt;We could also use the min( ) and max( ) functions to select the Departure and arrival Times, but the data stored by the GPS device is in GMT time and this hike took place in Eastern Standard Time in the United States, where the local setting is five hours earlier.&lt;/p&gt;  &lt;p&gt;Fortunately, XPath includes a special function adjust-dateTime-to-timezone( ) to adjust a dateTime value to a different time zone. Here is the expression we used to adjust the departure time:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;adjust-dateTime-to-timezone( min( $XML/n1:gpx/n1:trk/n1:trkseg/n1:trkpt/n1:time ), xs:dayTimeDuration('-PT5H') )&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Note that we must enter the adjustment duration as a string and explicitly declare it as a dayTimeDuration data type.&lt;/p&gt;  &lt;p&gt;We can use the Value Formatting dialog to present the departure and arrival times in a familiar style:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Value Formatting a dateTime result" border="0" alt="Value Formatting a dateTime result" src="http://lh5.ggpht.com/-iRof_1PEOr0/T41tFgbR_oI/AAAAAAAAAy4/0x1-QSpyFIE/clip_image006%25255B1%25255D.png?imgmax=800" width="486" height="371" /&gt;&lt;/p&gt;  &lt;p&gt;We have one more XPath enhancement for our GPS XML report. In our &lt;a href="http://blog.altova.com/2012/04/creating-elegant-reports-for-gps-xml.html"&gt;earlier post,&lt;/a&gt; we described a technique to use a StyleVision Project and standardized file names to generate reports for multiple data files without modifying the SPS file. You can also use the StyleVisionBatch utility, or even the StyleVision API to automate processing through SPS stylesheets to create reports in a variety of formats.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Chart File Names&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When we generate and save HTML output, the main report is an HTML document and charts are separate image files. We can specify the chart file name in the Chart Settings dialog, but if we want to save multiple HTML reports in the same folder on a server, we will need different file names for each chart. Otherwise, each new chart will use the default name, overwriting the previous version.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision chart file name dialog" border="0" alt="StyleVision chart file name dialog" src="http://lh6.ggpht.com/-AgmhHehVq4Q/T41tGeEH85I/AAAAAAAAAy8/58M0UkyBBgs/clip_image007%25255B1%25255D.png?imgmax=800" width="528" height="217" /&gt;&lt;/p&gt;  &lt;p&gt;The Custom file name option lets us use an XPath expression to specify a different image file name. One simple solution might be to generate a random number, convert it to a string, and insert the string into the file name.&lt;/p&gt;  &lt;p&gt;But we can’t do that because XPath does not include a random( ) function.&lt;/p&gt;  &lt;p&gt;Instead, we can generate a pseudo-random string by combining two additional XPath time functions. The function seconds-from-time( ) returns seconds and milliseconds from any value, and current-time( ) returns the current system time in hours, minutes, seconds, and milliseconds.&lt;/p&gt;  &lt;p&gt;We can seed seconds-from-time(current-time( )) into an XPath expression in the Image file settings dialog to plant a file name based on the exact second and millisecond the HTML result is generated. The complete XPath expression to generate the file name string looks like this:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Custom chart file name based on an XPath expression" border="0" alt="Custom chart file name based on an XPath expression" src="http://lh3.ggpht.com/-eKYGKDgTE3Y/T41tG5rSf_I/AAAAAAAAAzA/mfzA2xHPfCs/clip_image008%25255B1%25255D.png?imgmax=800" width="528" height="217" /&gt;&lt;/p&gt;  &lt;p&gt;When we save the generated HTML output, StyleVision reports all additional files created with the main document:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Pseudo-random file name generated based on XPath expression" border="0" alt="Pseudo-random file name generated based on XPath expression" src="http://lh5.ggpht.com/-lFtknXRCRx0/T41tHYy-d4I/AAAAAAAAAzE/rXLms4KlLFE/clip_image009%25255B1%25255D.png?imgmax=800" width="454" height="184" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Route Map Image File Names&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When we create multiple HTML pages for trip reports, we will also need to reference a different route map image for each trip. XPath can help with this task too. We initially inserted the map using a specific filename URL, but instead we can define an image filename as a parameter to be supplied when the stylesheet is processed.&lt;/p&gt;  &lt;p&gt;The Edit / Stylesheet Parameters menu option opens the Edit Parameters dialog, providing centralized access all parameters for the stylesheet. In the screenshot below, we added one parameter named routeMapFile and defined its default value.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision Edit Parameters window" border="0" alt="StyleVision Edit Parameters window" src="http://lh4.ggpht.com/-RNgIJCRUynk/T41tJ9qjtbI/AAAAAAAAAzI/xRMtQEP7KUs/clip_image010%25255B1%25255D.png?imgmax=800" width="400" height="300" /&gt;&lt;/p&gt;  &lt;p&gt;Now we can use the parameter to assign the route map file. The Edit Image dialog includes four options to define the location of an image. In the screenshot below, we chose the Static and Dynamic tab for a specific folder path and a dynamic file name.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Assigning a parameter to an image file name" border="0" alt="Assigning a parameter to an image file name" src="http://lh4.ggpht.com/-Fpvq94Ozbhw/T41tKTSpdvI/AAAAAAAAAzM/4niINvq5I7U/clip_image011%25255B1%25255D.png?imgmax=800" width="565" height="201" /&gt;&lt;/p&gt;  &lt;p&gt;We can supply a new value for the routeMapFile parameter when we generate a report in any output format. If we don’t supply a new value, the default defined in the Edit Parameters dialog is used.&lt;/p&gt;  &lt;p&gt;Now we can write a command line to execute StyleVision in batch mode with a different route map image:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Command line to execute StyleVision in batch mode with a parameter" border="0" alt="Command line to execute StyleVision in batch mode with a parameter" src="http://lh6.ggpht.com/-9pYl5bC12Bs/T41tLKn4VnI/AAAAAAAAAzQ/ByarXQ-ZdcE/clip_image012%25255B1%25255D.png?imgmax=800" width="593" height="105" /&gt;&lt;/p&gt;  &lt;p&gt;We could also use a parameter to assign the chart background. Another command line option can even select a new input XML file to replace the working XML defined in the stylesheet. Parameters and command line options make StyleVisionBatch a great way to use the same stylesheet to generate reports for many different data sets.&lt;/p&gt;  &lt;p&gt;Here is the HTML preview of the ice climbing trip data with all our XPath enhancements applied:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="HTML preview of the report with XPath enhancements" border="0" alt="HTML preview of the report with XPath enhancements" src="http://lh5.ggpht.com/--MSr3CqE-Uo/T41tLuthPCI/AAAAAAAAAzU/RyC_Ff9hN6M/clip_image014%25255B1%25255D.jpg?imgmax=800" width="517" height="864" /&gt;&lt;/p&gt;  &lt;p&gt;To design your own reports based on GPS XML files, or to elegantly achieve any other XML reporting, e-forms, or multi-channel publishing requirement, &lt;a href="http://www.altova.com/download/stylevision/db_xslt_stylesheet_designer_enterprise.html"&gt;click here for a free trial of Altova StyleVision&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-5463527015695845345?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/WsAvHlbvXZw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/5463527015695845345/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=5463527015695845345" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5463527015695845345?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5463527015695845345?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/WsAvHlbvXZw/xpath-enhances-xml-reports.html" title="XPath Enhances XML Reports" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-gSbmsmf1ZRY/T6FNDIQzqkI/AAAAAAAAAyg/1u_NWXO1IlM/s72-c/clip_image001%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/04/xpath-enhances-xml-reports.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MHQno7eyp7ImA9WhVWGUo.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-2724640582537242977</id><published>2012-04-10T08:00:00.005-04:00</published><updated>2012-05-02T11:10:33.403-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-02T11:10:33.403-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="StyleVision" /><category scheme="http://www.blogger.com/atom/ns#" term="Altova XMLSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="charts" /><category scheme="http://www.blogger.com/atom/ns#" term="XML publishing" /><category scheme="http://www.blogger.com/atom/ns#" term="Altova Online Training" /><title>Creating Elegant Reports for GPS XML Data</title><content type="html">&lt;p&gt;In our earlier post on &lt;a href="http://blog.altova.com/2012/03/global-positioning-of-xml.html"&gt;XML for Global Positioning Systems&lt;/a&gt;, we mentioned that adventurers and athletes might want to use XML data from their devices to keep a record of their trips, or even training sessions leading up a marathon or other special event. Several colleagues responded by offering example files!&lt;/p&gt;  &lt;p&gt;Looking through all this data, we realized that plotting elevation changes over time would show interesting results for many activities. We used &lt;a href="http://www.altova.com/xmlspy.html"&gt;XMLSpy&lt;/a&gt; to create this customized line graph directly from the XML data to show elevation vs. time for an afternoon of bicycling through California wine country. We even applied the vineyard photo as a background image right from the XMLSpy chart settings dialog.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="XMLSpy Line Chart" border="0" alt="Line chart generated by XMLSpy" src="http://lh4.ggpht.com/-WWjzG82AL7g/T6FOW7WHS3I/AAAAAAAAAz4/dYSTAlmANQU/clip_image001%25255B1%25255D.png?imgmax=800" width="540" height="360" /&gt;&lt;/p&gt;  &lt;p&gt;Whenever you want to elegantly present data from multiple XML data files based on the same XML Schema, &lt;a href="http://www.altova.com/stylevision.html"&gt;Altova StyleVision&lt;/a&gt; is the tool that lets you design a richly featured stylesheet for repeatable output in HTML, RTF, PDF, or Microsoft Word formats.&lt;/p&gt;  &lt;p&gt;Here’s how we did It for our GPS XML data:&lt;/p&gt;    &lt;a name='more'&gt;&lt;/a&gt; ;    &lt;p&gt;First we opened the GPS data file for each trip in XMLSpy to replace the generic title inserted by the GPS device in the &amp;lt;name&amp;gt; element at the top of the file, shown on line 11 in the screen shot below. The gpx.xsd schema defines an optional &amp;lt;desc&amp;gt; element for a description that can appear after &amp;lt;name&amp;gt;, so we added that element and wrote some commentary about the trip.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="XMLSpy XML editor" border="0" alt="Editing a GPS track name and description in XMLSpy" src="http://lh5.ggpht.com/-7qnjd1QWLPc/T37x85krqII/AAAAAAAAA0A/qyu0lVzR91E/clip_image002%25255B1%25255D.png?imgmax=800" width="594" height="202" /&gt;&lt;/p&gt;  &lt;p&gt;Next we used StyleVision to create a new SPS stylesheet based on the gpx.xsd schema, using our edited .gpx file as the working XML. We created a simple headline for the document and dragged the &amp;lt;name&amp;gt; and &amp;lt;desc&amp;gt; elements into the design window.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Altova StyleVision" border="0" alt="StyleVision design window with XML elements" src="http://lh6.ggpht.com/-_Qg6XqiqV7E/T37x96qQJnI/AAAAAAAAA0E/ePQzlT8xDek/clip_image003%25255B1%25255D.png?imgmax=800" width="574" height="243" /&gt;&lt;/p&gt;  &lt;p&gt;We wanted to insert the elevation chart next. All the chart settings were already saved in XMLSpy, so we could easily load the design into our stylesheet using the All Settings button in the StyleVision Chart Settings Dialog. We also wrote XPath expressions to select the time and elevation data from the working XML file.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision Chart Configuration dialog" border="0" alt="StyleVision Chart Configuration dialog" src="http://lh3.ggpht.com/-Xl3oMfmwQ-M/T37x_k-yaWI/AAAAAAAAA0I/U6XgrjP4gS0/clip_image004%25255B1%25255D.png?imgmax=800" width="610" height="670" /&gt;&lt;/p&gt;  &lt;p&gt;We thought it would interesting to compare the chart of elevation changes to the map route, so we plotted the route using the &lt;a href="http://www.gpsvisualizer.com/"&gt;GPS Visualizer&lt;/a&gt; Web site, took a screen shot of the map, and added it to the our design using the StyleVision Insert / Insert Image menu option.&lt;/p&gt;  &lt;p&gt;As we built the design, the Preview buttons along the bottom of the StyleVision Design window let us preview the document in any supported output format. Here is the Russian River Valley GPS data rendered by StyleVision in HTML, using the final version of the stylesheet:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision HTML preview" border="0" alt="StyleVision HTML preview of report for bicycle trip" src="http://lh3.ggpht.com/-y4WvNNi-pj0/T37yCaWbvRI/AAAAAAAAA0M/nvBMACA22Yk/clip_image006%25255B1%25255D.jpg?imgmax=800" width="524" height="864" /&gt;&lt;/p&gt;  &lt;p&gt;We needed an easy way to apply the same stylesheet to other GPS XML files. A StyleVision Project collects related files so they can be easily accessed by an SPS stylesheet, so we defined a project that includes the external folder containing all the files we used to create our design.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision Project window" border="0" alt="StyleVision Project window" src="http://lh6.ggpht.com/-otVBg4-DWlM/T37yEdZ2yPI/AAAAAAAAA0Q/v1Pq2ZS-9KY/clip_image007%25255B1%25255D.png?imgmax=800" width="275" height="216" /&gt;&lt;/p&gt;  &lt;p&gt;We carefully chose file names for the three files used in the stylesheet to describe their purpose instead of their contents. To create a new report, we can simply replace chartBackground.jpg, (the background photo for the chart), Log file.gpx (the working XML file), and routeMap.PNG (the map from GPS Visualizer) in the working files folder with copies corresponding to a different trip, then generate new output. We don’t need to make any changes or revisions to the SPS file!&lt;/p&gt;  &lt;p&gt;Simply swapping all three files and generating new HTML gave us this result for a ski trip in the Alps, not far from the Altova office in Vienna:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision HTML preview" border="0" alt="StyleVision HTML preview of report for ski trip" src="http://lh4.ggpht.com/-X_s1VI_AoMg/T37yGMpNjQI/AAAAAAAAA0U/HXeM8B_av1g/clip_image009%25255B1%25255D.jpg?imgmax=800" width="535" height="864" /&gt;&lt;/p&gt;  &lt;p&gt;Swapping again created this result for a winter hike in the New Hampshire woods to reach an ice-climbing wall:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="StyleVision HTML preview" border="0" alt="StyleVision HTML preview of report for winter mountain hike" src="http://lh4.ggpht.com/-h29Jp8-NhRM/T37yHTTIu_I/AAAAAAAAA0Y/4Ie5u5lFHK4/clip_image011%25255B1%25255D.jpg?imgmax=800" width="534" height="864" /&gt;&lt;/p&gt;  &lt;p&gt;The same stylesheet can generate other formats too. Our design fits neatly as a one-page Microsoft Word document we can print and store in a binder.&lt;/p&gt;  &lt;p&gt;If you’d like to produce reports based on your own GPS XML files, or if you need to accomplish any other reporting, e-forms, or multi-channel publishing requirement, &lt;a href="http://www.altova.com/download/stylevision/db_xslt_stylesheet_designer_enterprise.html"&gt;click here to download a StyleVision free trial&lt;/a&gt;. StyleVision includes extensive online Help, including a tutorial and sample files. Altova even offers self-paced Beginner and Intermediate &lt;a href="http://www.altova.com/aot/online-training.aspx"&gt;Online Training for StyleVision&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Editor’s Note:&lt;/strong&gt; A follow-up to this post titled &lt;a href="http://blog.altova.com/2012/04/xpath-enhances-xml-reports.html"&gt;XPath Enhances XML Reports&lt;/a&gt; describes how to use XPath expressions to localize and add more data to reports on GPX data. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-2724640582537242977?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/67ZnDFHfD6M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/2724640582537242977/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=2724640582537242977" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/2724640582537242977?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/2724640582537242977?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/67ZnDFHfD6M/creating-elegant-reports-for-gps-xml.html" title="Creating Elegant Reports for GPS XML Data" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-WWjzG82AL7g/T6FOW7WHS3I/AAAAAAAAAz4/dYSTAlmANQU/s72-c/clip_image001%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/04/creating-elegant-reports-for-gps-xml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMHQ3gyfyp7ImA9WhVQFEU.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-24614190542028095</id><published>2012-04-03T09:00:00.002-04:00</published><updated>2012-04-03T17:10:32.697-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-03T17:10:32.697-04:00</app:edited><title>Transforming a Plain Layout in StyleVision</title><content type="html">&lt;p&gt;&lt;a href="http://www.altova.com/training"&gt;Altova Online Training’s&lt;/a&gt; newest course, XSLT Technology, leads the student though several transformations of XML data into new formats. Even with all the transformations performed in the class, there are some transformations that did not make it into the final edit. &lt;/p&gt;  &lt;p&gt;In Chapter 4 of the XSLT Technology training, I walk students through the process of creating a flyer for the play “Hamlet” using StyleVision. The source content is in XML, and StyleVision autogenerates the XSL stylesheets required to render it into HTML, PDF, and Word, based on our design. &lt;/p&gt;  &lt;p&gt;I asked the Altova Art Department to spruce up my design, and, while I did not end up using the nicer design in the training, I wanted to show how to turn my plain flyer into the Art Department’s vision. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-I238isLevVM/T2eOHWIyx-I/AAAAAAAAANo/xLA14RfPUOM/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh4.ggpht.com/-Vnpu32AKK2I/T2eOIPIc9II/AAAAAAAAANw/PFl3_LOMJro/clip_image001_thumb.png?imgmax=800" width="508" height="371" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s explore the transformation.&lt;/p&gt;
&lt;p&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/p&gt;  
&lt;p&gt;The Art Department sent me a PDF of their final version of the flyer with a this set of instructions:  
background color: #fffde9 and #f7f0cb   
headline: Künstlerscript size: 58pt, color: #7a1315   
subheadline: Minion pro size 14pt, color: #92793b   
text: Minion pro size 10pt, color: black   
line: 2pt, color: white &lt;/p&gt;  &lt;p&gt;Let’s add these design elements to the flyer. Most of these changes are set using the Style window in StyleVision. You can get a copy of all the files &lt;a href="http://www.altova.com/library/Flyer_Files.zip"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Open the flyer_plain.sps file in StyleVision. The end result will match the flyer_fancy.sps file. &lt;/p&gt;  &lt;p&gt;Click on the background of the design, and in the Style window, change the layout container, color, background to #F7F0CB. This changes the background color of the page. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-ILcHQtMB_U4/T2eVHwTRAII/AAAAAAAAAQM/fcxLkM4yeZE/s1600-h/clip_image002%25255B6%25255D%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002[6]" border="0" alt="clip_image002[6]" src="http://lh6.ggpht.com/-_SW3vmB6dRQ/T2eVIB_KJzI/AAAAAAAAAQU/yT0n1vOaIjM/clip_image002%25255B6%25255D_thumb.png?imgmax=800" width="412" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click on the Play/Title at the top of the page. Change the layout box, color, background to #FFFDE9. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-uARAO_DVvwQ/T2eVIqoFPrI/AAAAAAAAAQc/B8hRhCcZgCY/s1600-h/clip_image003%25255B6%25255D%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003[6]" border="0" alt="clip_image003[6]" src="http://lh6.ggpht.com/-ycUIu62J9lE/T2eVI5h7xKI/AAAAAAAAAQk/almO63C7NZg/clip_image003%25255B6%25255D_thumb.png?imgmax=800" width="412" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Change the content, color, color to #7A1315 and the content, font, font to 58pt Kunstler Script. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-UQllnXxOOhA/T2eVJW14_CI/AAAAAAAAAQs/ItiavY1kyUY/s1600-h/clip_image004%25255B6%25255D%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004[6]" border="0" alt="clip_image004[6]" src="http://lh5.ggpht.com/-ETz2uA_jMi4/T2eVJ1961jI/AAAAAAAAAQ0/hWchWlcC0Qk/clip_image004%25255B6%25255D_thumb.png?imgmax=800" width="412" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We want to set the default font for the entire page. Click on Edit Properties at the top of the Design. On the Document Setting tab, set the font, font to 10pt Minion Pro. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-nJEPFgG-CX8/T2eVKQ4XgeI/AAAAAAAAAQ8/oSFLUDPqWlU/s1600-h/clip_image005%25255B6%25255D%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image005[6]" border="0" alt="clip_image005[6]" src="http://lh4.ggpht.com/-KHx17khb5oo/T2eVKlB21-I/AAAAAAAAARE/HXYuBoh0eDY/clip_image005%25255B6%25255D_thumb.png?imgmax=800" width="440" height="466" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Select the text “A Play in Five Acts”. Click the Bold toolbar button to un-bold the text. In the Style window, set the text, color, color to #92793B. &lt;/p&gt;  &lt;p&gt;In the second column, click the TITLE tag to select the (content). Click the Bold toolbar button. Set the text, color, color to #92793B. &lt;/p&gt;  &lt;p&gt;Click on the vertical line between the columns. In the Properties box, set its color to white and its width to 2pt. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-VzwI3zJyBAM/T2eVK112P0I/AAAAAAAAARM/V4IvNgDVFuI/s1600-h/clip_image006%25255B6%25255D%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006[6]" border="0" alt="clip_image006[6]" src="http://lh6.ggpht.com/-_hU5EVxbdok/T2eVMJ3uckI/AAAAAAAAARU/hCk8QTxIs1c/clip_image006%25255B6%25255D_thumb.png?imgmax=800" width="436" height="301" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click on the PDF tab to generate the PDF file. It is very close to the finished product, but we still need a little work. &lt;/p&gt;  &lt;p&gt;It is a subtle difference, but if you look at the Scene titles, in the Before, we have “SCENE I. Elsinore. A platform before the castle” and in the After, we have “SCENE I. &lt;i&gt;Elsinore. A platform before the castle&lt;/i&gt;”. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-UksePh_6alY/T2eVMu60lhI/AAAAAAAAARc/396QzbXCouc/s1600-h/clip_image007%25255B6%25255D%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image007[6]" border="0" alt="clip_image007[6]" src="http://lh3.ggpht.com/-CbFgNEu54Hk/T2eVNIV3GiI/AAAAAAAAARg/0Fwo0QdGH4M/clip_image007%25255B6%25255D_thumb.png?imgmax=800" width="606" height="249" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We need to italicize the text after the scene numbers. This is complicated by the fact that this field in our layout is a single string element in the XML data. We will need to programmatically split the string into substrings and assign the formatting to each substring separately in our layout. We will use the period that appears after each scene number to split the string. &lt;/p&gt;  &lt;p&gt;For the Dramatis Personae list, we want the names in all upper case to be left as is, and the rest of the words to be Italic. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-DRjY5QQ8Ngk/T2eVNVJDvmI/AAAAAAAAARs/Qp-mSlow7G0/s1600-h/clip_image008%25255B6%25255D%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008[6]" border="0" alt="clip_image008[6]" src="http://lh4.ggpht.com/-sL3V83gwSDU/T2eVOJ4cYdI/AAAAAAAAAR0/u_sfhnamEiY/clip_image008%25255B6%25255D_thumb.png?imgmax=800" width="606" height="254" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We want to use the comma after the all capital name as the splitter, but not all the lines in the list have an all capital name. We will test the string to see if it has a comma. If it does, then the text before the comma will appear Normal, and the text after the comma will be Italic. If there is no all caps name, then we make the entire line Italic. &lt;/p&gt;  &lt;p&gt;Go back to the StyleVision Design view. &lt;/p&gt;  &lt;p&gt;Delete the (contents) from between the Scene/Title tags, leaving the tags. Right click, and Insert an Auto Calculation/Value in its place. Enter the following XPath Expression: &lt;/p&gt;  &lt;p&gt;substring-before( ., “.”) &lt;/p&gt;  &lt;p&gt;This will extract the text before the first period in the string. This will be “SCENE X” where X will be the scene number. Remember that the period refers to the current node in XPath. The period inside the quotes is the string fragment consisting of a single period.Copy the Auto Calculation and paste it right after the existing Auto Calculation. Double-click to edit, and change the substring-before function to the substring-after function. This will insert the text after the period. &lt;/p&gt;  &lt;p&gt;Select the second Auto Calculation, and click the Italic toolbar button to apply the Italic format to the text. &lt;/p&gt;  &lt;p&gt;Because we split the string before and after the period, we need to add the period back to the layout. Type a period between the Auto Calculations. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-dNgtMVQ7YA0/T2eVOSTTxnI/AAAAAAAAAR8/9Qhjwg5oW4k/s1600-h/clip_image009%25255B6%25255D%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image009[6]" border="0" alt="clip_image009[6]" src="http://lh4.ggpht.com/-iafXNrdK6B0/T2eVOz4xDJI/AAAAAAAAASE/6IThvLbPMFI/clip_image009%25255B6%25255D_thumb.png?imgmax=800" width="314" height="159" /&gt;&lt;/a&gt;   
Scene List after formatting. Note the period   
between the Auto Calculations.&lt;/p&gt;  &lt;p&gt;The Dramatis Personae needs a similar procedure. Delete the (contents) between the Persona tags. Insert an Auto Calculation/Value, and type the following XPath Expression: &lt;/p&gt;  &lt;p&gt;if ( contains( ., “,”))  
then concat( substring-before(. , “,”), “,”)   
else “” &lt;/p&gt;  &lt;p&gt;If the Persona string starts with an all-caps name, it will have a comma between the name and the description. This is what we use to split the Persona string. If the string does not start with a name, we want to output nothing. &lt;/p&gt;  &lt;p&gt;Add another Auto Calculation/Value, and make its XPath Expression be: &lt;/p&gt;  &lt;p&gt;if ( contains (. , “,”))  
then substring-after(. , “,”)   
else . &lt;/p&gt;  &lt;p&gt;If the Persona string started with a name, then we want this to be the string after the name. If the Persona does not start with a name, just return the entire Persona string. &lt;/p&gt;  &lt;p&gt;Select this second Auto Calculation and click the Italic toolbar button. &lt;/p&gt;  &lt;p&gt;Click on the PDF tab to generate the output file. This is now identical to what the Altova Art Department specified. &lt;/p&gt;  &lt;p&gt;Save your work. &lt;/p&gt;  &lt;p&gt;Because we created the flyer transformation in StyleVision, we can apply it to any play in the same format. Try it out with the Macbeth.xml file in the &lt;a href="http://www.altova.com/library/Flyer_Files.zip"&gt;zip file.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To learn more about transforming XML data, take our free, on-line, self-paced XSLT Technology &lt;a href="http://www.altova.com/training"&gt;training&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-24614190542028095?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/YIaMezEvFeo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/24614190542028095/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=24614190542028095" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/24614190542028095?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/24614190542028095?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/YIaMezEvFeo/transforming-plain-layout-in.html" title="Transforming a Plain Layout in StyleVision" /><author><name>Adam Heyman</name><uri>http://www.blogger.com/profile/08813263305350224662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-QfISubrnC_E/Tf-Sk8ObimI/AAAAAAAAAFk/UFKXSmNGSvM/s220/Adam.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-Vnpu32AKK2I/T2eOIPIc9II/AAAAAAAAANw/PFl3_LOMJro/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/04/transforming-plain-layout-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MEQ30_fSp7ImA9WhVRGUk.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-2847237181504682849</id><published>2012-03-28T09:30:00.002-04:00</published><updated>2012-03-28T09:30:02.345-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-28T09:30:02.345-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FlowForce Server" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="data integration" /><title>FlowForce Server Beta 2 is Now Available</title><content type="html">&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-3b0yUMuSLsI/T2zE9mtCM2I/AAAAAAAAAq0/aG3WjmzeoCk/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="FlowForce Server Beta 2" border="0" alt="FlowForce Server Beta 2" src="http://lh3.ggpht.com/-bMgPUQZyVoI/T2zE9w0vTwI/AAAAAAAAAq8/w1iLaNp964s/clip_image001_thumb.png?imgmax=800" width="378" height="96" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;FlowForce Server, the new server product from Altova that automates execution of MapForce data transformations, has gained hundreds of enthusiastic followers since the release of FlowForce Server Beta 1 last December. Now we are pleased to announce the release of &lt;a href="http://www.altova.com/flowforce.html"&gt;FlowForce Server Beta 2&lt;/a&gt;, offered as a free public beta test to all licensed users of Altova &lt;a href="http://www.altova.com/mapforce.html"&gt;MapForce 2012&lt;/a&gt; Enterprise Edition and MapForce 2012 Professional Edition.&lt;/p&gt;  &lt;p&gt;The beta test period for FlowForce Server Beta 2 is extended until September 1, 2012.&lt;/p&gt;  &lt;p&gt;FlowForce Server Beta 2 adds robust access control to segregate jobs and related data files, so departments can work independently without seeing or overwriting each other’s data. Access control functionality includes defined Users and Roles, Privileges, and Credentials, all managed by FlowForce Server Administrators.&lt;/p&gt;  &lt;p&gt;FlowForce Server Beta 2 also includes Web interface enhancements to provide more status information about job schedules, active triggers, and more. &lt;/p&gt;  &lt;p&gt;FlowForce Server Beta 2 is available in a 32-bit version and a 64-bit version. The new 64-bit version allows the MapForce Beta 2 module to process very large data files and provides compatibility with 64-bit database drivers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.altova.com/flowforce.html"&gt;Click here to read more about FlowForce Server Beta 2&lt;/a&gt; at the Altova Web site, or &lt;a href="http://www.altova.com/download/flowforce/flowforce_server.html"&gt;visit the FlowForce Server Beta 2 download page&lt;/a&gt; to get a copy of the installers for yourself!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-2847237181504682849?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/MuKjIrKA4a4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/2847237181504682849/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=2847237181504682849" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/2847237181504682849?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/2847237181504682849?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/MuKjIrKA4a4/flowforce-server-beta-2-is-now.html" title="FlowForce Server Beta 2 is Now Available" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-bMgPUQZyVoI/T2zE9w0vTwI/AAAAAAAAAq8/w1iLaNp964s/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://blog.altova.com/2012/03/flowforce-server-beta-2-is-now.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMCSXw9eSp7ImA9WhVRGEk.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-4487375970541397355</id><published>2012-03-26T09:00:00.001-04:00</published><updated>2012-03-27T06:34:28.261-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-27T06:34:28.261-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tradeshows" /><category scheme="http://www.blogger.com/atom/ns#" term="FOSE" /><title>Come Visit Altova this Spring at FOSE!</title><content type="html">&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-gXaJbodMRlc/T2eLVSYutMI/AAAAAAAAAB8/pS4NVcJZefw/s1600-h/clip_image002%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" hspace="12" alt="clip_image002" align="left" src="http://lh4.ggpht.com/-0i8gj-mqxyo/T2eLV3AVN0I/AAAAAAAAACE/Ux-fB1NPuoA/clip_image002_thumb.jpg?imgmax=800" width="224" height="151" /&gt;&lt;/a&gt; Stop and smell the cherry blossoms, then come visit Altova while we are in Washington D.C.! We will be at FOSE April 3-5 in booth #719 at the Walter E. Washington Convention Center showcasing the tools in the Altova MissionKit. &lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;If you are attending &lt;a href="http://www.fose.com/Events/FOSE-2012/Home.aspx"&gt;FOSE&lt;/a&gt;, stop by our booth to see the &lt;a href="http://www.altova.com/whatsnew.html"&gt;latest features&lt;/a&gt; in the Altova MissionKit 2012r2, which include EPUB editing and validation in XMLSpy, sorting of data mapping results in MapForce, generation of code from UML sequence diagrams in UModel, RichEdit functionality in StyleVision and Authentic and much more. &lt;a href="http://lh4.ggpht.com/-H1DrA3i58tQ/T2eLWGoYKEI/AAAAAAAAACM/c_cO2_rMaJc/s1600-h/clip_image004%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" hspace="12" alt="clip_image004" align="right" src="http://lh5.ggpht.com/-jFrIPl8jt4U/T2eLWhk_k-I/AAAAAAAAACU/ga1be5C7HTY/clip_image004_thumb.jpg?imgmax=800" width="284" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you stop by our booth, don’t forget to enter our drawing to win a free Altova MapForce Basic Edition license. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-4487375970541397355?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/QLJ_t4HP-04" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/4487375970541397355/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=4487375970541397355" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/4487375970541397355?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/4487375970541397355?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/QLJ_t4HP-04/come-visit-altova-this-spring-at-fose.html" title="Come Visit Altova this Spring at FOSE!" /><author><name>Cindy Neely</name><uri>http://www.blogger.com/profile/00531134651893899680</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-0i8gj-mqxyo/T2eLV3AVN0I/AAAAAAAAACE/Ux-fB1NPuoA/s72-c/clip_image002_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/03/come-visit-altova-this-spring-at-fose.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMFQ349cSp7ImA9WhVREkk.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-4537111929821633255</id><published>2012-03-20T09:00:00.000-04:00</published><updated>2012-03-20T09:00:12.069-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-20T09:00:12.069-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tradeshows" /><category scheme="http://www.blogger.com/atom/ns#" term="DevConnections" /><title>Visit Altova at DevConnections!</title><content type="html">&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-QmHxYW0HQ0A/T2eKkKouQxI/AAAAAAAAABc/UP98XQMLFHA/s1600-h/clip_image001%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" hspace="12" alt="clip_image001" align="left" src="http://lh6.ggpht.com/-VbpvU3DAFF8/T2eKkdFtNFI/AAAAAAAAABk/BysjOIZb1Xs/clip_image001_thumb.jpg?imgmax=800" width="180" height="150" /&gt;&lt;/a&gt;Join us in Las Vegas as we kick off the 2012 tradeshow season! The Altova team will be in &lt;b&gt;booth # 215&lt;/b&gt; in Las Vegas on March 26-29 at the MGM Grand for the Spring &lt;a href="http://www.devconnections.com/home.aspx"&gt;Microsoft DevConnections&lt;/a&gt; event. &lt;/p&gt;  &lt;p&gt;We would love to see you there, where we will be showcasing the entire suite of tools found in the Altova MissionKit. Altova MissionKit 2012r2 products provide specialized functionality for Microsoft developers and IT pros, including seamless integration with Visual Studio®, C# and C++ code generation, powerful functionality for SQL Server® database management and reporting, integration with SharePoint® Server, functionality for working with Open XML (OOXML), diff/merge for Word documents, and much more. &lt;a href="http://lh3.ggpht.com/-QFhcht6fw24/T2eKkmVR_2I/AAAAAAAAABs/u_YbPxnVZG4/s1600-h/clip_image003%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" hspace="12" alt="clip_image003" align="right" src="http://lh5.ggpht.com/-Z9NUhoUciEU/T2eKld00lOI/AAAAAAAAAB0/8z5yd7OA1Tw/clip_image003_thumb.jpg?imgmax=800" width="221" height="146" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Feeling lucky? If you are planning on attending the show, don’t forget to stop by our booth and enter our drawing for a chance to win a free Altova MapForce Basic Edition license.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-4537111929821633255?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/foA163DWTpo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/4537111929821633255/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=4537111929821633255" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/4537111929821633255?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/4537111929821633255?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/foA163DWTpo/visit-altova-at-devconnections.html" title="Visit Altova at DevConnections!" /><author><name>Cindy Neely</name><uri>http://www.blogger.com/profile/00531134651893899680</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-VbpvU3DAFF8/T2eKkdFtNFI/AAAAAAAAABk/BysjOIZb1Xs/s72-c/clip_image001_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/03/visit-altova-at-devconnections.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAGR34-cSp7ImA9WhVSFkk.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-5848109324720210690</id><published>2012-03-13T10:08:00.000-04:00</published><updated>2012-03-13T10:08:46.059-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-13T10:08:46.059-04:00</app:edited><title>Building Web Pages – HTML Design with StyleVision</title><content type="html">&lt;p&gt;The rapid pace of today’s business environment means that information – along with the format in which it is required – changes often. Although some Web pages contain content that doesn’t often change (e.g., About Us and directions pages), the majority of today’s corporate Websites are continually updated with new data.&lt;/p&gt;&lt;p&gt;For this reason, many organizations choose to store Web content in XML. This allows organizations to develop content in a highly efficient manner because information in the XML file can be used for multiple purposes and in multiple output formats – the XML Schema associated with the XML file describes the content model. &lt;/p&gt;&lt;p&gt;StyleVision is a powerful stylesheet and report designer that can help you leverage XML. StyleVision will allow you to &lt;a href="http://www.altova.com/stylevision/web-design.html"&gt;build Web pages&lt;/a&gt; with sophisticated formatting in a template-based, drag and drop design window. StyleVision &lt;a href="http://www.altova.com/stylevision/xslt-html.html"&gt;auto-generates XSLT stylesheets&lt;/a&gt; so that you can integrate your design into a new or existing site – you can even generate ASPX Web applications right from the File menu. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-H-qFnpImHnA/TzEYFD10sbI/AAAAAAAAAWw/xd9kXGKp02g/s1600-h/clip_image001%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh6.ggpht.com/-Mo2Tu0QZMKQ/TzEYFXd_f4I/AAAAAAAAAW4/ktfIfXthFcI/clip_image001_thumb%25255B1%25255D.png?imgmax=800" width="604" height="541" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In this post we’ll design a Web page that will show off some of StyleVision’s HTML formatting capabilities. Although StyleVision’s built in formatting capabilities allow you to create sophisticated designs via simple drag-and-drop, for this example we’ll use &lt;a href="http://www.altova.com/stylevision/xslt-css.html"&gt;CSS3&lt;/a&gt;, images, and other standard design elements to create a Web page that doesn’t need to be reformatted when content changes.&lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt;  &lt;p&gt;Our initial StyleVision design couldn’t be more basic.&lt;/p&gt;&lt;p&gt;As you can see in the Schema Tree window below, the source XML Schema was designed so that the XML can be published in book format and includes an overview, chapter headings, chapter subheadings, and content. We’ve simply dragged the elements corresponding to these sections into the design window.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-ObHzvln3T2M/TzEYF4WfRQI/AAAAAAAAAXA/jiNhGNHKSlQ/s1600-h/clip_image002%25255B4%25255D.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh6.ggpht.com/-BPIEx_VZjbU/TzEYGZRzx8I/AAAAAAAAAXI/799r1qMQ_9g/clip_image002_thumb%25255B1%25255D.gif?imgmax=800" width="604" height="455" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As you can see below, the XML content is rendered appropriately – and we didn’t have to write any XSLT or HTML by hand to achieve it. However, it needs a style makeover before we can publish it as a Web page. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-hLYoSfNTqwY/TzEYGl2298I/AAAAAAAAAXQ/U_mqgmdH5aI/s1600-h/clip_image003%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh3.ggpht.com/-GYrrKvmKfI0/TzEYG-Qu3aI/AAAAAAAAAXY/LmYgOx7_jPQ/clip_image003_thumb%25255B1%25255D.png?imgmax=800" width="490" height="612" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Although virtually all design elements can be formatted in the Styles and Properties panes in the StyleVision interface, in this instance we’ll use a CSS file to apply formatting. That way, if we want to change the formatting we can simply point to a new CSS file in the XSLT rather than making changes in the design itself. &lt;/p&gt;&lt;p&gt;We’ll use XMLSpy, Altova’s &lt;a href="http://www.altova.com/xml-editor/"&gt;XML editor&lt;/a&gt; with integrated CSS2 and CSS3 editing and authoring capabilities, to create our CSS.&lt;/p&gt;&lt;p&gt;The screenshot below captures a portion of the CSS file we’ve created in XMLSpy and includes the properties for the h1, h2, and h3 headers. We’ll define these elements here in the CSS file. Then we’ll assign them to elements from our XML file in StyleVision. &lt;/p&gt;&lt;p&gt;Notice that we’ve included the CSS3 properties box-shadow in h1 and box-sizing in h3 – both XMLSpy and StyleVision support HTML5 and CSS3.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-puzAVL_C0GQ/TzEYHbGkKeI/AAAAAAAAAXg/Jbs-r3id3Pk/s1600-h/clip_image004%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh5.ggpht.com/-f1A_aBwQ4Sw/TzEYHma1CPI/AAAAAAAAAXo/6SfTn1LnNdQ/clip_image004_thumb%25255B1%25255D.png?imgmax=800" width="595" height="642" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once we’ve created our CSS file we’ll return to StyleVision and assign it to the design we’ve created.&lt;/p&gt;&lt;p&gt;To assign a CSS file to a StyleVision design, we simply click the &lt;i&gt;add new CSS File &lt;/i&gt;link in the Design Overview and navigate to the file. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-wP6AoGdp1oE/TzEYH5gIuBI/AAAAAAAAAXw/ML0VQuOItJg/s1600-h/clip_image005%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh5.ggpht.com/-_4c3Ol7amvs/TzEYIBmDYRI/AAAAAAAAAX4/eb2wpL2xLiU/clip_image005_thumb%25255B1%25255D.png?imgmax=800" width="226" height="293" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Please note that a StyleVision design can support multiple CSS files. We recently blogged about how to &lt;a href="http://blog.altova.com/2012/01/get-more-mileage-from-your-stylevision.html"&gt;dynamically assign CSS files to a StyleVision design.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now we can start assigning the selectors we created in our CSS file to the elements in our design.&lt;/p&gt;&lt;p&gt;We’ll start with the chapter heading. We’ll highlight the contents placeholder for the chapter heading element and select h1 from the drop down box on the menu bar.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-qW-eWAXrfac/TzEYIVYLIJI/AAAAAAAAAYA/nqSArbWHaNs/s1600-h/clip_image006%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh3.ggpht.com/-a-MaRW2n-AQ/TzEYIq8zPuI/AAAAAAAAAYI/oxT9C_jG1G8/clip_image006_thumb%25255B1%25255D.png?imgmax=800" width="498" height="712" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In our CSS file we defined font, font size, color, and alignment for h1. We also used the CSS3 box-shadow property. &lt;/p&gt;&lt;p&gt;Below is the HTML view of our design with the h1 selector assigned to the chapter heading element.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-4r3Bf4jTBTI/TzEYI-jibcI/AAAAAAAAAYQ/4vf9KOnSFlA/s1600-h/clip_image007%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://lh5.ggpht.com/-rmZF7njKPJw/TzEYJBiDeII/AAAAAAAAAYY/VHKDlLpNcSM/clip_image007_thumb%25255B1%25255D.png?imgmax=800" width="564" height="612" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Likewise, we’ll assign the h2 and h3 selectors to the overview and chapter subheading elements. Our design now looks like this.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-BXquuuPNhaM/TzEYJeCEmMI/AAAAAAAAAYc/LfjSNsvaJ_s/s1600-h/clip_image008%25255B4%25255D.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh3.ggpht.com/-reqkThcpVq4/TzEYJkmztRI/AAAAAAAAAYo/yQqc_cEbJRk/clip_image008_thumb%25255B1%25255D.gif?imgmax=800" width="604" height="572" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The HTML view appears below – notice that we’ve used the CSS3 box-sizing property to position the subheadings (Create Striking Output and Visual Stylesheet Design) and wrap the text around them.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-Rhd5pkkvhF0/TzEYLdxCXSI/AAAAAAAAAYw/LcNm6UHAYio/s1600-h/clip_image009%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://lh4.ggpht.com/-TxafUezFexQ/TzEYM3XfhqI/AAAAAAAAAY4/42u6r2oDvrI/clip_image009_thumb%25255B1%25255D.png?imgmax=800" width="567" height="612" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Finally, we’ll add an image to the bottom of the page using an attribute called coverimage from the source XML file (pictured below). &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-RQANM46r-sw/TzEYNJw_ZxI/AAAAAAAAAZA/TXocXzFmzBY/s1600-h/clip_image010%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh5.ggpht.com/-e-bO4nBvyp8/TzEYNbLKFiI/AAAAAAAAAZI/kTcwbGrtSXM/clip_image010_thumb%25255B1%25255D.png?imgmax=800" width="520" height="258" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;To add the image to our design we’ll simply drag the coverimage element from the Schema Tree into the Design Window and select Create Image. This will invoke the Insert Image dialog box. We’ll move to the Dynamic tab, click the Edit XPath button and select the cover image element from the Schema Tree.&lt;/p&gt;&lt;p&gt;The Insert Image dialog box appears below.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-3BYH6D8mYsQ/TzEYNhlJvuI/AAAAAAAAAZQ/_eZIzfhZuhw/s1600-h/clip_image011%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://lh4.ggpht.com/-11I5DELZW7E/TzEYN17nsVI/AAAAAAAAAZY/Ur0CVDxFT7o/clip_image011_thumb%25255B1%25255D.png?imgmax=800" width="566" height="202" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We’ve also added some formatting for images in our CSS file using the CSS3 property border-radius, which adds rounded corners to an element.&lt;/p&gt;&lt;p&gt;The section of our CSS file that defines image formatting appears below – this view is from XMLSpy.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-kqKu3KFbBns/TzEYOJ1ABJI/AAAAAAAAAZg/x1CmD0G_QME/s1600-h/clip_image012%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh3.ggpht.com/--lMaklvkwxQ/TzEYOZ4YdsI/AAAAAAAAAZo/p3jegclrA0Y/clip_image012_thumb%25255B1%25255D.png?imgmax=800" width="406" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In addition to the formatting techniques we’ve used here, we could also add advanced functionality using JavaScript functions, conditional templates, auto-calculations, and more – but for the purposes of this example we’ll keep things simple. &lt;/p&gt;&lt;p&gt;Our design is now ready for prime time – the HTML view is pictured below.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-7tq_9TK1Z8I/TzEYOv7vf-I/AAAAAAAAAZw/nzjSKdeZ3tE/s1600-h/clip_image001%25255B1%25255D%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001[1]" border="0" alt="clip_image001[1]" src="http://lh4.ggpht.com/-o018m3x_eM4/TzEYO7drxcI/AAAAAAAAAZ4/_v3TBfwoMs0/clip_image001%25255B1%25255D_thumb%25255B1%25255D.png?imgmax=800" width="604" height="541" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now that we’re happy with the design we can save the auto-generated XSLT stylesheet using the File menu.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-P5WjHAVrUb8/TzEYPHCdk5I/AAAAAAAAAaA/Q1iWw8iMi5o/s1600-h/clip_image013%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://lh5.ggpht.com/-gRgOx9vIRx4/TzEYPonha8I/AAAAAAAAAaI/3qmbAT5IBug/clip_image013_thumb%25255B1%25255D.png?imgmax=800" width="604" height="641" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We can likewise generate an ASPX Web application for this design by selecting the Web Design option immediately below Save Generated Files. We can choose to generate HTML 4 or HTML 5 output and even select Internet Explorer compatibility from the Properties dialog box (also accessed via the File menu). &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-P7Q475fmxgc/TzEYP7OR1jI/AAAAAAAAAaQ/TVxvGxCnIgg/s1600-h/clip_image014%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://lh6.ggpht.com/-URBS_XW2K2g/TzEYQHcwKEI/AAAAAAAAAaY/mjHVzfcP_RM/clip_image014_thumb%25255B1%25255D.png?imgmax=800" width="370" height="460" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Better yet, if the source data changes, it will automatically be reflected in the HTML output.&lt;/p&gt;&lt;p&gt;If we add to our XML file, for example, the new content is formatted like the original and all design elements appear in proper relation to each other – no re-coding of the HTML is necessary. &lt;/p&gt;&lt;p&gt;Here we’ve added a new chapter subheading and associated content to the underlying XML file and previewed it in HTML.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-dQnw-NixtwY/TzEYQQkBpWI/AAAAAAAAAag/fpm63c9Okeg/s1600-h/clip_image015%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://lh3.ggpht.com/-YGDmSgh1y4I/TzEYQopbKJI/AAAAAAAAAao/Bpum5TUej0U/clip_image015_thumb%25255B1%25255D.png?imgmax=800" width="604" height="541" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As you can see StyleVision offers the best of both worlds – you can create a single one-size-fits-all HTML template with dynamic formatting capabilities. With the total formatting control afforded by StyleVision you can design Web pages and ASPX applications that reflect your vision.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-i6QWHiMeWjw/TzEYQ4a5vdI/AAAAAAAAAaw/rwcOuoOGpFk/s1600-h/clip_image016%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://lh4.ggpht.com/-nXzfHGnXI78/TzEYRR2ZH4I/AAAAAAAAAa4/Ig6uBhKr3Zg/clip_image016_thumb.png?imgmax=800" width="242" height="6" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-5848109324720210690?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/Zez1zNAXonk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/5848109324720210690/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=5848109324720210690" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5848109324720210690?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5848109324720210690?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/Zez1zNAXonk/building-web-pages-html-design-with.html" title="Building Web Pages – HTML Design with StyleVision" /><author><name>Beth O'Brien</name><uri>http://www.blogger.com/profile/01866465171951974254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-Mo2Tu0QZMKQ/TzEYFXd_f4I/AAAAAAAAAW4/ktfIfXthFcI/s72-c/clip_image001_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/02/building-web-pages-html-design-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04HRns-eip7ImA9WhVXEUg.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-1833475784833581598</id><published>2012-03-06T08:00:00.002-05:00</published><updated>2012-04-11T11:58:57.552-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-11T11:58:57.552-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Altova XMLSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><title>The Global Positioning of XML</title><content type="html">&lt;p&gt;XML is everywhere. If you don’t believe it, get a USB cable and connect a GPS device to a computer, then browse for any file with the extension .gpx. We quickly found a 2 MB file named Current.gpx on a Garmin GPS. Opening it in &lt;a href="http://www.altova.com/xmlspy.html"&gt;XMLSpy&lt;/a&gt; reveals XML data and an XML Schema assignment at the top.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ioQAbFBAvmI/T06Z3ACH_9I/AAAAAAAAAn8/xWMUhUTx68A/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="XMLSpy XML Editor" border="0" alt="XML Schema assignment in an XML file" src="http://lh3.ggpht.com/-99u2euIsJ4c/T06Z3djTP2I/AAAAAAAAAoE/9dN5fozXQNg/clip_image001_thumb.png?imgmax=800" width="501" height="363" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Scrolling through the body of the file displays numerous &amp;lt;trkpt&amp;gt; tags that record latitude and longitude along with &amp;lt;ele&amp;gt; and &amp;lt;time&amp;gt; tags reporting the elevation, date and time at that location. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-nfGGLH9kBL8/T06Z3mruepI/AAAAAAAAAoM/ReG4Av5VyJ0/s1600-h/clip_image002%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="XMLSpy XML Editor" border="0" alt="View of an XML file in XMLSpy" src="http://lh6.ggpht.com/-Atzl1R22Oqo/T06Z4I8PaQI/AAAAAAAAAoU/A7BOE4jHBpU/clip_image002_thumb.png?imgmax=800" width="498" height="518" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Any place you may go in the world, XML is there to tell you where you are.&lt;/p&gt;    &lt;a name='more'&gt;&lt;/a&gt;    &lt;p&gt;Back at the top of the .gpx file, we can copy the URL for the XML Schema and open it in XMLSpy directly from the Web.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-TMJNbqtdNzg/T06Z4QT4MCI/AAAAAAAAAoc/U_pH8-qUqrk/s1600-h/clip_image003%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="XMLSpy Schema view" border="0" alt="XMLSpy Schema view" src="http://lh6.ggpht.com/-s8h8QbzjvjA/T06Z4we0_3I/AAAAAAAAAok/DuDgax18qzo/clip_image003_thumb.png?imgmax=800" width="556" height="505" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The GPX Schema opens in XMLSpy Schema view, where we can see it is well-documented with explanatory text. Double-clicking the root element opens the XMLSpy Content Model view.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-kGUm6qnJWIQ/T06Z5HOad8I/AAAAAAAAAos/HECufLQfMNk/s1600-h/clip_image004%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="XMLSpy Content Model view" border="0" alt="XMLSpy Content Model view" src="http://lh3.ggpht.com/-TzsOtTQzo1Q/T06Z5ek_EwI/AAAAAAAAAo0/nJkbGlnGSaA/clip_image004_thumb.png?imgmax=800" width="496" height="555" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This XML Schema describes a specialized data architecture using tags that are accessible for a casual user. Expanding the &amp;lt;trk&amp;gt; element drills down to definitions of the &amp;lt;trkseg&amp;gt; and &amp;lt;trkpt&amp;gt; elements we saw in Current.gpx. These are also documented in the XML Schema with clear explanations of their purpose.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-tXYfFLnDjKQ/T06Z5iPwZMI/AAAAAAAAAo8/V4sMhHo7dpc/s1600-h/clip_image005%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Detail of the XMLSpy Content Model" border="0" alt="Detail of the XMLSpy Content Model" src="http://lh4.ggpht.com/-dU5KjSqntVk/T06Z53CyuMI/AAAAAAAAApE/Rh1iSi8ds7Q/clip_image005_thumb.png?imgmax=800" width="479" height="323" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The X in XML stands for eXtensible. The extensions element in the gpx XML Schema signals the developers knew their design would not suit all possible requirements. Back at the top of the Current.gpx file, we can see the assignment of extension schemas on line 2, and the metadata starting on line 3 indicates that Garmin International created extensions for this file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-aMfDGu288uI/T06Z6Gm6xSI/AAAAAAAAApM/lhSHnICj8YQ/s1600-h/clip_image006%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Detail of an XML file in XMLSpy" border="0" alt="Detail of an XML file in XMLSpy" src="http://lh6.ggpht.com/-cm6Jgm0i9NU/T06Z6X0ySCI/AAAAAAAAApU/uGUhl4fcPzQ/clip_image006_thumb.png?imgmax=800" width="463" height="237" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The body of Current.gpx includes Garmin extensions to record speed in &amp;lt;gpxtpx:speed&amp;gt; and directional heading in &amp;lt;gpxtpx:course&amp;gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-zAso4IiYCvI/T06Z6j2bhyI/AAAAAAAAApc/KRTiuQ_aGTE/s1600-h/clip_image007%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="XML Data in XMLSpy" border="0" alt="Detail of an XML file in XMLSpy" src="http://lh3.ggpht.com/-SruSULYdhf0/T06Z62ddu-I/AAAAAAAAApk/UfeCJDJAYcM/clip_image007_thumb.png?imgmax=800" width="432" height="110" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Web sites like &lt;a href="http://www.gpsvisualizer.com/"&gt;GPS Visualizer&lt;/a&gt; let you upload .gpx files and plot their data on Google maps, but when we uploaded the Current.gpx file, the map showed a confusing jumble of many overlapping and intersecting colored lines. A legend on the Web page listed nearly two dozen individual trip logs, identified by the words ACTIVE LOG and a date.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-_9AJOkTEiEA/T06Z7KW4yqI/AAAAAAAAAps/s6C7oK7hCuE/s1600-h/clip_image008%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="List of Tracks in a gpx file" border="0" alt="List of Tracks in a gpx file" src="http://lh3.ggpht.com/-49Ee9GHL_dQ/T06Z7hcmb0I/AAAAAAAAAp0/mFmCqTL1l1I/clip_image008_thumb.png?imgmax=800" width="180" height="520" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The legend entries all look suspiciously like line 83731 in the screenshot of partial contents of the .gpx file. Using XMLSpy to search for “ACTIVE LOG” verifies our file actually does include records for numerous road trips. Like many other car navigation and handheld devices, the Garmin GPS accumulates data over time in a single large file, with each individual trip encapsulated between &amp;lt;trk&amp;gt; and &amp;lt;/trk&amp;gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.altova.com/mapforce.html"&gt;Altova MapForce&lt;/a&gt; is a convenient tool to split these large .gpx files into smaller files for each trip. We can assign the gpx.xsd XML schema for both the input and output side of a mapping and use the group-by function to split the Current.gpx file based on each new occurrence of the &amp;lt;trk&amp;gt; element, highlighted below by the red connector. We used the &amp;lt;name&amp;gt; element just below &amp;lt;trk&amp;gt; as the key to mark each break, and to construct each output filename, after stripping the “:” character that is illegal in filenames.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-IJ__CRhfa_E/T06Z71I7qmI/AAAAAAAAAp8/brL4Dx4biSw/s1600-h/clip_image009%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="MapForce mapping to split a large gpx file" border="0" alt="MapForce mapping to split a large gpx file" src="http://lh3.ggpht.com/-7mAz9FY2tUU/T06Z8LEcE5I/AAAAAAAAAqE/eyiJBuR6RY0/clip_image009_thumb.png?imgmax=800" width="587" height="825" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When we click the MapForce Output button to execute the mapping, MapForce generates a new output file each time &amp;lt;trk&amp;gt; is encountered in the input stream. The screenshot below shows file 14 of 20 total files created. Notice the schema assignment and metadata (lines 2-8) are included in each output file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-DZii6QIaYUg/T06Z8u-ANzI/AAAAAAAAAqM/1lc4QwJXoe4/s1600-h/clip_image010%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Output of the MapForce mapping to split files" border="0" alt="Output of the MapForce mapping to split files" src="http://lh6.ggpht.com/-aW-M7dIu46A/T06Z866Uh4I/AAAAAAAAAqU/dyUYQDIKO_w/clip_image010_thumb.png?imgmax=800" width="544" height="580" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we can map any individual file at the &lt;a href="http://www.gpsvisualizer.com/"&gt;GPS Visualizer&lt;/a&gt; Web site to see a single trip:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-AdaqaYySTIA/T06Z9TQ6_-I/AAAAAAAAAqc/WOFGx6XeuPw/s1600-h/clip_image011%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Plot of a single gpx track on Google Maps" border="0" alt="Plot of a single gpx track on Google Maps" src="http://lh4.ggpht.com/-G0UHa4mnSrw/T06Z9jQ_oSI/AAAAAAAAAqk/iQNdR_3Q1vE/clip_image011_thumb.png?imgmax=800" width="600" height="508" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;An application like this is handy for athletes like hikers, mountain climbers, bicyclists, or runners, as well as road trip adventurers who like to keep records of their journeys. More information about the GPS Exchange Format, the GPX schema, and a list of supporting resources is available at &lt;a href="http://www.topografix.com/gpx.asp"&gt;http://www.topografix.com/gpx.asp&lt;/a&gt;. If you’d like to try out XMLSpy, MapForce, or any other Altova tool, you can &lt;a href="http://www.altova.com/download-trial/"&gt;click here to download a free 30-day trial&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Editor’s Note:&lt;/strong&gt; On April 10, 2012 we published an associated post titled &lt;a href="http://blog.altova.com/2012/04/creating-elegant-reports-for-gps-xml.html"&gt;Creating Elegant Reports for GPS XML Data&lt;/a&gt; that describes a StyleVision stylesheet to draw a graph of elevation changes recorded in the GPS XML trip log and render a report in HTML, RTF, PDF, and Microsoft Word formats.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-1833475784833581598?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/dpGiLpQuBNs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/1833475784833581598/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=1833475784833581598" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/1833475784833581598?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/1833475784833581598?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/dpGiLpQuBNs/global-positioning-of-xml.html" title="The Global Positioning of XML" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-99u2euIsJ4c/T06Z3djTP2I/AAAAAAAAAoE/9dN5fozXQNg/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/03/global-positioning-of-xml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMESHo9cCp7ImA9WhVTE0k.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-587988814609613395</id><published>2012-02-27T06:00:00.000-05:00</published><updated>2012-02-27T06:00:09.468-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-27T06:00:09.468-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XSL:FO" /><category scheme="http://www.blogger.com/atom/ns#" term="StyleVision" /><category scheme="http://www.blogger.com/atom/ns#" term="XML Schema" /><category scheme="http://www.blogger.com/atom/ns#" term="XMLSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="xpath" /><category scheme="http://www.blogger.com/atom/ns#" term="XML Editor" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="Altova Online Training" /><category scheme="http://www.blogger.com/atom/ns#" term="MissionKit" /><category scheme="http://www.blogger.com/atom/ns#" term="XSLT" /><title>New! XSLT Technology Training</title><content type="html">&lt;p&gt;&lt;a&gt;We’re&lt;/a&gt; excited to introduce our new XSLT Technology training as the latest Altova Online Training offering. As with all our trainings, XSLT Technology is released as a free, self-paced course, available &lt;a href="http://www.altova.com/training"&gt;online&lt;/a&gt;, so students can fit it into their busy schedules. &lt;/p&gt;  &lt;p&gt;XSLT transforms XML data into other formats, and this course will transform a beginner XML student into an advanced user. Intermediate and advanced students will gain valuable techniques to add to their XML toolkits.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-AdtD-kTQ15Q/TzqyUj53rpI/AAAAAAAAALo/g5k-ZcIyAFc/s1600-h/clip_image002%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/-DZp67jtAaF8/TzqyWLZ566I/AAAAAAAAALw/R54D27-35BU/clip_image002_thumb.jpg?imgmax=800" width="402" height="325" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;a name='more'&gt;&lt;/a&gt;  &lt;p&gt;Chapter 1 starts the course with an &lt;a&gt;overview &lt;/a&gt;of XPath, XSL, XSLT, and XSL-FO to introduce the concepts and vocabulary. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-MjBDjzSaatE/TzqyWSx1z5I/AAAAAAAAAL4/Okx6SJYmThA/s1600-h/clip_image004%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh5.ggpht.com/-firI8GOhS2g/TzqyWjksFEI/AAAAAAAAAMA/hJTWcg2_PZQ/clip_image004_thumb.jpg?imgmax=800" width="151" height="71" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In chapter 2, we move on to taking XML data and reforming it into new XML files. This is programmed in XMLSpy using XSLT code. We then transfer data from XML source files into new XML destination files using the graphical mapping tools of MapForce.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-5m2i_jwncHs/TzqyZ9bk_6I/AAAAAAAAAMI/aLM98V7ybFk/s1600-h/clip_image006%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh6.ggpht.com/-AzbSu6nkTeA/TzqyaZUSerI/AAAAAAAAAMQ/XPzEgQTjvEE/clip_image006_thumb.jpg?imgmax=800" width="150" height="68" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Chapter 3 transforms XML data into HTML web pages. XMLSpy is used to program the transformations. StyleVision is used to graphically represent the transformation and perform it. StyleVision is also used to generate XSLT code files.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-l_f3lH7UwnI/TzqybgZb4SI/AAAAAAAAAMY/pw_LJG4cWrE/s1600-h/clip_image008%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh6.ggpht.com/-tOnkOUkz4uA/TzqycNXvfiI/AAAAAAAAAMg/_ZT0tVOr4O0/clip_image008_thumb.png?imgmax=800" width="284" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Chapter 4 explores XSL-FO transformations. We use an XSL transformation to generate an FO file that is then transformed into a PDF file. XMLSpy is used to show the two step transformation. StyleVision is then used to simplify the process.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-k9x--GR090I/Tzqycxv_qsI/AAAAAAAAAMo/FAxfbXNuNsg/s1600-h/clip_image010%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh3.ggpht.com/-8BVC7Gm4-6c/TzqydQg_UkI/AAAAAAAAAMw/QyzkmbyyB8k/clip_image010_thumb.png?imgmax=800" width="400" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In chapter 5, we explore XSLT programming techniques. We use XSL functions to lookup, group, number, and alter XML data. We also modularize our XSLT code using functions.&lt;/p&gt;  &lt;p&gt;After completing the course, the student will be able to transform XML data into XML files, into HTML web pages, and PDF documents, using both the programming tools of XMLSpy, and the graphical tools of MapForce and StyleVision.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Gd8wq3GmeeU/TzqydstXVrI/AAAAAAAAAM4/raT1HfhJiyQ/s1600-h/clip_image012%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh3.ggpht.com/-Lb84AjJKvzo/Tzqyd-Yhm5I/AAAAAAAAANA/xHCib1OwMQc/clip_image012_thumb.jpg?imgmax=800" width="319" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can access XSLT Technology, and all of our free, web based, self-paced trainings on the &lt;a href="http://altova.com/aot/online-training.aspx"&gt;Altova Online Training page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-587988814609613395?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/b9fipypSIEo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/587988814609613395/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=587988814609613395" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/587988814609613395?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/587988814609613395?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/b9fipypSIEo/new-xslt-technology-training.html" title="New! XSLT Technology Training" /><author><name>Adam Heyman</name><uri>http://www.blogger.com/profile/08813263305350224662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-QfISubrnC_E/Tf-Sk8ObimI/AAAAAAAAAFk/UFKXSmNGSvM/s220/Adam.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-DZp67jtAaF8/TzqyWLZ566I/AAAAAAAAALw/R54D27-35BU/s72-c/clip_image002_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/02/new-xslt-technology-training.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04MRn0yeip7ImA9WhVTEE0.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-2865666361581501222</id><published>2012-02-22T09:59:00.002-05:00</published><updated>2012-02-23T09:06:27.392-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-23T09:06:27.392-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="v2012r2" /><category scheme="http://www.blogger.com/atom/ns#" term="XMLSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="EPUB" /><category scheme="http://www.blogger.com/atom/ns#" term="new features" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="Altova Online Training" /><category scheme="http://www.blogger.com/atom/ns#" term="MissionKit" /><title>Release 2 of the Altova MissionKit 2012</title><content type="html">&lt;p&gt;It’s an exciting week here at Altova! We have several new offerings to tell you about, including Release 2 of the Version 2012 Altova MissionKit and entire product line, a new Altova Online Training course on XSLT Technology, and a new service called Altova Product Consulting. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/--WQJVI0IQH4/T0Ov0z5V1KI/AAAAAAAAAJA/jypSRP_pBZ8/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh4.ggpht.com/-Ye-aCt4Oktw/T0Ov1cr3JmI/AAAAAAAAAJI/CkuUAYNL0vE/clip_image001_thumb.png?imgmax=800" width="318" height="192" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s start with what’s included in the latest product release. Version 2012 Release 2 delivers a host of the new features that have been most frequently requested by our customers, including support for EPUB 2.x, sorting of data mapping results, RichEdit functionality for Authentic eForms, code generation from UML sequence diagrams, and much more. &lt;/p&gt;  &lt;p&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Version 2012 Release 2 Highlights&lt;/h3&gt;  &lt;p&gt;&lt;b&gt;EPUB &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;As the demand for e-books and other digital publications has exploded, so have the number of requests we’ve received from developers who need an easy way to create and edit these documents in XMLSpy 2012. In Release 2 we’ve added support for &lt;a href="http://idpf.org/epub"&gt;EPUB&lt;/a&gt;® (electronic publication), the open standard for e-books from the International Digital Publishing Forum (&lt;a href="http://idpf.org"&gt;IDPF&lt;/a&gt;). It’s easy to view and work with the various files that make up an EPUB document in XMLSpy’s Archive View, which supports creating, editing, validating, and previewing EPUB digital publications. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-mJXz5-unvT0/T0Ov1zfoZRI/AAAAAAAAAJQ/OkFikpYsz7U/s1600-h/clip_image003%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh5.ggpht.com/-wZHyC2_5j6A/T0Ov2fxccCI/AAAAAAAAAJY/wF5ymuh5F6A/clip_image003_thumb.jpg?imgmax=800" width="624" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;XMLSpy already provides validation and support for editing XML, XHTML, CSS, and other standards-based files that comprise EPUB documents, making it a natural choice for creating and working with EPUB content. &lt;/p&gt;  &lt;p&gt;Check out all the &lt;a href="http://www.altova.com/whatsnew.html#xmlspy"&gt;new features in XMLSpy&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Sorting for Data Mapping Projects &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Another frequently requested feature is the ability to sort data in mapping projects where the final output format needs to be ordered differently than it was in the input. MapForce 2012r2 includes two powerful new sorting features that you can apply in a variety of ways.&lt;/p&gt;  &lt;p&gt;The screenshot below shows a new function that performs a multi-level sort on the source data before writing the output file: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-oC9zj1HocJU/T0Ov3qNgAOI/AAAAAAAAAJg/x0iOgaVKLIs/s1600-h/clip_image004%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh5.ggpht.com/-rn8BRrwMDsg/T0Ov4L4dnuI/AAAAAAAAAJo/w5uqnGZASGA/clip_image004_thumb.png?imgmax=800" width="577" height="521" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Another option is available for sorting relational input. MapForce users have long been able to sort database data through ORDER BY statements in SQL queries. However, SQL queries that operate inside the database are not always sufficient for complex data mapping tasks. MapForce 2012r2 adds additional database sorting functionality to the existing MapForce SQL-WHERE component to become SQL-WHERE/ORDER, which is especially useful when database input requires additional processing that cannot be accomplished in a SQL query, or other data or conditions can impact the sorted order of data rows. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-BVjgc02-hy8/T0Ov4pa8rxI/AAAAAAAAAJw/0nqhAlnuCqs/s1600-h/clip_image005%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh5.ggpht.com/-ku3wlZ5jpQw/T0Ov4yDSzMI/AAAAAAAAAJ4/e7oyhdLRQpA/clip_image005_thumb.png?imgmax=800" width="530" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Read more about &lt;a href="http://www.altova.com/whatsnew.html#mapforce"&gt;new MapForce features&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Other important features added in R2 include &lt;a href="http://www.altova.com/whatsnew.html#stylevision"&gt;RichEdit&lt;/a&gt; functionality for Authentic eForms created in StyleVision, &lt;a href="http://www.altova.com/whatsnew.html#umodel"&gt;code generation from UML sequence diagrams&lt;/a&gt; in UModel, support for logical files in IBM® iSeries® databases across the product line, and much more. &lt;/p&gt;  &lt;h4&gt;Upgrade Info&lt;/h4&gt;  &lt;p&gt;Check out the rest of the &lt;a href="http://www.altova.com/whatsnew.html"&gt;features added in Release 2&lt;/a&gt;. This new version is free to &lt;a href="http://www.altova.com/download"&gt;download&lt;/a&gt; and install for customers with Support and Maintenance. If you’re not already an Altova customer, you can download a free, fully functional &lt;a href="http://www.altova.com/download-trial.html"&gt;30-day trial&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;XSLT Technology Training&lt;/h3&gt;  &lt;p&gt;We are thrilled to announce the latest &lt;a href="http://www.altova.com/training"&gt;Altova Online Training&lt;/a&gt; course, XSLT Technology. This &lt;strong&gt;free&lt;/strong&gt;, online, self-paced &lt;a href="http://www.altova.com/training"&gt;class&lt;/a&gt; introduces students to the concepts of XSL, XSLT, XPath, XSL-FO, and more, through guided tutorials and videos. You can practice working with these technologies using the tools of the Altova MissionKit to transform XML to XML, to HTML, and to PDF. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ki7NAUOvbx0/T0OwhPpK0OI/AAAAAAAAAKU/UR8OtkaJGVQ/s1600-h/clip_image007%25255B6%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image007" border="0" hspace="12" alt="clip_image007" src="http://lh6.ggpht.com/-X2p7hde7hJc/T0Owiq6EfAI/AAAAAAAAAKc/gxwNep2lTCo/clip_image007_thumb%25255B1%25255D.jpg?imgmax=800" width="600" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Altova Product Consulting&lt;/h3&gt;  &lt;p&gt;Have you ever wished you could purchase a few hours of a product expert’s time – whether you need to determine if a particular tool could solve your problem, or need help creating a schema or mapping project, or simply require in-depth product support? We’ve heard from a lot of customers with this very requirement – and in response we have created &lt;a href="http://www.altova.com/altova-product-consulting.html"&gt;Altova Product Consulting&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Altova's Product Consulting engineers are experts on Altova software and related technologies. Services include determining if an Altova product meet the needs of a particular project, creating a MapForce mapping file (.mfd), designing a StyleVision design (.sps), and so on. Unlike typical complicated consulting engagements, Altova Product Consulting services are sold per hour, the allotment of which is agreed upon in advance, so there are no surprises.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.altova.com/altova-product-consulting.html"&gt;Get more information&lt;/a&gt; on specific services provided, pricing, and how to get started. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-2865666361581501222?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/swOVpGzelbY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/2865666361581501222/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=2865666361581501222" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/2865666361581501222?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/2865666361581501222?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/swOVpGzelbY/release-2-of-altova-missionkit-2012.html" title="Release 2 of the Altova MissionKit 2012" /><author><name>Erin Cavanaugh</name><uri>http://www.blogger.com/profile/05488702872055566047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_C4xYMtGRX-M/SYie9G7vVdI/AAAAAAAAABE/7MnFXMC-iy8/S220/Erin.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-Ye-aCt4Oktw/T0Ov1cr3JmI/AAAAAAAAAJI/CkuUAYNL0vE/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.altova.com/2012/02/release-2-of-altova-missionkit-2012.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEAQX0yfyp7ImA9WhRaEk8.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-4986595614450042594</id><published>2012-02-14T08:04:00.000-05:00</published><updated>2012-02-14T08:04:00.397-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-14T08:04:00.397-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="UML" /><category scheme="http://www.blogger.com/atom/ns#" term="UML tool" /><category scheme="http://www.blogger.com/atom/ns#" term="UModel" /><category scheme="http://www.blogger.com/atom/ns#" term="v2012" /><title>Model Driven Architecture with Altova UModel</title><content type="html">&lt;p&gt;For Version 2012, &lt;a href="http://www.altova.com/umodel.html"&gt;UModel&lt;/a&gt; introduces Model Driven Architecture (MDA), with platform-independent models and a Model Transformation feature that transforms all code relevant modeling elements to and from UML, C#, Visual Basic, Java, databases, and XML Schema.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Model Transformation&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A Model Driven Architecture approach to software engineering with platform independent models provides two primary advantages:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;During the design phase, developers do not need to be concerned with the details and variations between software languages     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;An existing UModel project can be transformed from one source code language to another. For instance, a UML model for a C# application can become a Java or Visual Basic project&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Users can even apply model transformation to projects that were reverse engineered from existing source code. For instance, an existing Java application can be reverse-engineered by UModel then transformed to generate Visual Basic classes, and many other possibilities are available.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-IkLLlKyafts/TzGCeZSd8gI/AAAAAAAAAmk/l08wEfYKH04/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Model Transformation Dialog" border="0" alt="Model Transformation dialog in Altova UModel" src="http://lh5.ggpht.com/-vlDqDh0bm04/TzGCelTJU_I/AAAAAAAAAmo/5iBbBSXMQN8/clip_image001_thumb.png?imgmax=800" width="492" height="420" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Platform Independent Models&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Model Driven Architecture is a set of standards and methods for applying the UML (Unified Modeling Language) administered by the Object Management Group. In Model Driven Architecture, the UML model of a software project is a platform independent model (PIM) that can be fully described without concern for the details of any specific programming language. This development strategy allows software architects and other developers to focus exclusively on logic required by the subject domain, rather than characteristics of any programming language.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Data Type Mapping&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;During model transformation, UModel maps data types from the source to the target to accommodate differences between languages. The Type Mapping dialog lets you review or even edit type mapping pairs.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-rEbyMfbBpyQ/TzGCesGg87I/AAAAAAAAAm0/bxq-gJkEpxA/s1600-h/clip_image002%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Type Mapping for UML Model Transformation" border="0" alt="Type mapping for UML model transformation" src="http://lh5.ggpht.com/-wv6KDewZJG8/TzGCfHTDz8I/AAAAAAAAAm8/2HbRCTFxdoQ/clip_image002_thumb.png?imgmax=800" width="492" height="420" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;UModel also automatically adds the target language profile to the transformed project.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;UML Class Diagrams&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;As part of the model transformation, UModel creates new UML classes and class diagrams for the target, reflecting classes and class diagrams in the original project. The screen shot below shows the Hierarchy of Account diagram for Visual Basic after model transformation from Java. The new Account class in the new folder named VB Target in the model tree contains Visual Basic syntax for all properties and operations. For instance, the new balance property is defined as the Visual Basic Single data type, whereas in Java the data type was float.&lt;/p&gt;  &lt;p&gt;After transformation, the original Account class for Java is preserved in the model in its original location in the model tree. The original UML design for Java will now generate code in multiple source code languages – Java and Visual Basic.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-szjiBcB8F-k/TzGCfaRJyVI/AAAAAAAAAnE/BG4Wj_kpps8/s1600-h/clip_image003%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="UModel class diagram and Model Tree" border="0" alt="UModel class diagram and Model Tree" src="http://lh4.ggpht.com/-YLCTivkFrmA/TzGCfqos7qI/AAAAAAAAAnM/LXPoJNJq2w8/clip_image003_thumb.png?imgmax=800" width="592" height="351" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Persistent Transformation Parameters&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The transformation paradigm extends to updating existing transformations and merging the updates into the specified target models. Transformation parameters are stored in a Model Transformation Profile in the model. The Transformation Profile can be set to run transformations automatically before forward engineering code generation, and/or after reverse engineering, to update elements for one target language based on changes to model elements for another.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-DHWJQT8EZsI/TzGCgI86yiI/AAAAAAAAAnU/rgnof3YteXc/s1600-h/clip_image004%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="UModel Model Transformation Parameters" border="0" alt="UModel transformation parameters stored with model" src="http://lh4.ggpht.com/-Bx5vm9d3qxs/TzGCgsJoN9I/AAAAAAAAAnc/7ztagxEOGsM/clip_image004_thumb.png?imgmax=800" width="568" height="448" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;These Transformation Profile settings can also be changed at any time.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-f4vf3DYtxLU/TzGCgzLGIDI/AAAAAAAAAnk/l2ck6BKgv3w/s1600-h/clip_image005%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Transformation Profile Settings" border="0" alt="UModel Transformation Profile settings" src="http://lh6.ggpht.com/-sReAh4mAWY0/TzGChB9cMlI/AAAAAAAAAns/4VUGEppaMGo/clip_image005_thumb.png?imgmax=800" width="383" height="213" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This functionality lets UModel automate much of the maintenance of multiple source code languages as your cross-platform model evolves.&lt;/p&gt;  &lt;p&gt;If you’d like to try out Model Driven Architecture and model transformation with UModel 2012, you can &lt;a href="http://www.altova.com/download/umodel/uml_tool_enterprise.html"&gt;download a free 30-day trial&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-4986595614450042594?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/J7XBPo59j6U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/4986595614450042594/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=4986595614450042594" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/4986595614450042594?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/4986595614450042594?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/J7XBPo59j6U/model-driven-architecture-with-altova.html" title="Model Driven Architecture with Altova UModel" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-vlDqDh0bm04/TzGCelTJU_I/AAAAAAAAAmo/5iBbBSXMQN8/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/02/model-driven-architecture-with-altova.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMEQng9eip7ImA9WhRbEUw.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-1373892860884191891</id><published>2012-02-01T12:13:00.000-05:00</published><updated>2012-02-01T12:13:23.662-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-01T12:13:23.662-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xml reports" /><category scheme="http://www.blogger.com/atom/ns#" term="StyleVision" /><category scheme="http://www.blogger.com/atom/ns#" term="xml to database" /><category scheme="http://www.blogger.com/atom/ns#" term="software tools" /><title>Data Exchange for the Mobile Workforce</title><content type="html">&lt;p&gt;&lt;b&gt;Data Exchange for the Mobile Workforce&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Organizations have been forced to adapt many of their internal business processes to accommodate an increasingly mobile workforce. Although there are technological solutions that address many of today’s communication needs, the plethora of different document formats in use – even within the same organization – means that some tasks remain vexing. For example, how does an organization remain flexible enough to facilitate the exchange of data among mobile workers yet retain the ability to bring that data into internal IT systems? &lt;/p&gt;&lt;p&gt;Altova offers an inexpensive solution with StyleVision®, a graphical stylesheet and report designer with electronic forms capability, and Authentic®, a WYSIWYG XML and database editor in which end users can view and edit electronic forms created in StyleVision. The Authentic Community Edition is &lt;a href="http://www.altova.com/download/authentic/xml_db_form_editor_desktop.html"&gt;available from the Altova Web site as a free download&lt;/a&gt; so that anyone can be brought into your workflow, whether they are internal or external to your organization.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-PevmyQqyxCU/Tylxr4M21qI/AAAAAAAAASo/9UDb6MHeRP0/s1600-h/clip_image002%25255B7%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh5.ggpht.com/-0BIdbup1WCI/TylxslyNu9I/AAAAAAAAASw/J4lIVPv9lB0/clip_image002_thumb%25255B2%25255D.jpg?imgmax=800" width="630" height="425" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In this post we’ll present a sample case showing you how to create an electronic form that mirrors an existing paper form (in our example it is a reimbursement form) and then we’ll follow it as it makes its way around a fictional organization. &lt;/p&gt;&lt;p&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Please note that the example we use here is simplistic and was designed only to illustrate the process of developing and deploying an electronic form. Although you can add additional data sources and perform validation and other complex functions in StyleVision, we have not illustrated these here.&lt;/p&gt;&lt;p&gt;It is extremely easy to design electronic forms in StyleVision. To start, we simply select New – New from XML Schema/DTD/XML … from the File menu, browse to an XML Schema file, and select the type of design we’d like to create. &lt;/p&gt;&lt;p&gt;For this example we created an XML Schema and instance file in XMLSpy, Altova’s &lt;a href="http://www.altova.com/xmlspy.html"&gt;XML editor and development environment&lt;/a&gt;,&lt;b&gt; &lt;/b&gt;based on the fields on the paper reimbursement form. You can also base a StyleVision design on a database or XBRL taxonomy.&lt;/p&gt;&lt;p&gt;Below is a copy of the reimbursement form we will be using along with the XML Schema we created.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-xMTIo-wF2WM/TylxtZOWYqI/AAAAAAAAAS0/1ss8cIyDe-c/s1600-h/clip_image002%25255B8%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh5.ggpht.com/-8SMJRzV77pU/TylxtoN9vcI/AAAAAAAAAS8/NAZxprm7rRs/clip_image002_thumb%25255B3%25255D.jpg?imgmax=800" width="630" height="425" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-s_AeRtjGdzU/TylxuW33DGI/AAAAAAAAATI/6r7FC3vRC-c/s1600-h/clip_image003%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://lh5.ggpht.com/-YINM9ih5A2M/Tylxv-TwBzI/AAAAAAAAATQ/Gpx5etVG2dY/clip_image003_thumb%25255B1%25255D.png?imgmax=800" width="538" height="639" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once we select the XML file in StyleVision, we are prompted to select either a free-flow or form-based document. In a form-based document all design elements (e.g., text boxes for user input, images, buttons) are fixed in position – ideal for data entry forms.&lt;/p&gt;&lt;p&gt;When we create a form-based document, we can upload a “blueprint image” so that we can recreate a paper-based form exactly as it was originally designed. This is the option we’ve selected below. The image will appear in the background of the design window and we will simply place design elements on top of corresponding elements on the form. Of course, the blueprint image overlay does not appear in the final output.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-pH9kumjNQb8/TylxwpQDq5I/AAAAAAAAATY/3TsS7DDLUJo/s1600-h/clip_image004%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh6.ggpht.com/-PiQaOk6tDSU/TylxxN1QjNI/AAAAAAAAATg/oR1i9RGhxVc/clip_image004_thumb%25255B1%25255D.png?imgmax=800" width="606" height="396" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The screenshot below shows the blueprint image as it appears in the design window in StyleVision – how cool is that? &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-zpBDNYlFAyg/Tylxx4G6LeI/AAAAAAAAATs/3BQqU4W4Tm0/s1600-h/clip_image005%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh3.ggpht.com/-z73sUFqvsTY/TylxzIKlmuI/AAAAAAAAAT4/m316wAKAr-Q/clip_image005_thumb%25255B1%25255D.png?imgmax=800" width="604" height="442" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now, using the Insert menu at the top, we can simply insert design elements onto the blueprint image in the design window.&lt;/p&gt;&lt;p&gt;Available design elements include form controls (e.g., input boxes, combo boxes, radio buttons), images, tables, charts, and “layout containers” for exact positioning.&lt;/p&gt;&lt;p&gt;We’ll start by adding input fields to capture employee information (i.e., First [Name], Last [Name], Title, etc. from the top part of the form). Once we click Insert – Insert Form Controls and select Input Field, the Insert Design Element dialog box appears.&lt;/p&gt;&lt;p&gt;We have highlighted the First [Name] element in the dialog box below – the input field will now be associated with the First element. This way, when the end user types data into the input field and saves the form, this information will populate the First [Name] element in the XML file.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-QUkLxSHiyyQ/Tylxzmp1ZDI/AAAAAAAAAUA/AdyDzJnw8us/s1600-h/clip_image006%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh6.ggpht.com/-hLEflFy1sJM/Tylx0LpM5BI/AAAAAAAAAUE/QCVAwLktES0/clip_image006_thumb%25255B1%25255D.png?imgmax=800" width="384" height="457" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We now add design elements throughout the rest of the form, associating input fields with their respective elements from the XML file.&lt;/p&gt;&lt;p&gt;When we are finished adding input fields, a logo, lines, a table for the expense items, and labels, the design looks like this – we’ve set the opacity attribute for the blueprint image to 0 to make it easier to view the design elements. &lt;/p&gt;&lt;p&gt;Please note also that we’ve done some additional design work such as adding calendars in date fields, drop down boxes, and a currency sign that changes according to user input. For more information about fine tuning your form please see the StyleVision User and Reference Manual in the StyleVision application.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;a href="http://lh6.ggpht.com/-6y0s0Fw7DwM/Tylx0c6fXWI/AAAAAAAAAUM/kXNi7-6jlkU/s1600-h/clip_image007%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://lh5.ggpht.com/-NcEKgP1bloM/Tylx0_ywOhI/AAAAAAAAAUY/4GeDFsaqALE/clip_image007_thumb%25255B1%25255D.png?imgmax=800" width="604" height="555" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We can preview how the end user will see the form we designed in StyleVision by clicking on the Authentic eForm tab at the bottom of the design window (below). &lt;/p&gt;&lt;p&gt;Note that the end user is prompted to enter data directly into each data input field. We accomplished this by placing the prompts (e.g., Insert First Name) in between the relevant tags in the XML file associated with our design. The end user simply highlights the prompt and replaces it with text.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ptt0UtL62Lg/Tylx1iVid9I/AAAAAAAAAUg/Qu_ADFN7oBg/s1600-h/clip_image008%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh6.ggpht.com/-BzpjcpBQ1Mk/Tylx2JqE0mI/AAAAAAAAAUk/b3DXBvOeuXg/clip_image008_thumb%25255B1%25255D.png?imgmax=800" width="604" height="523" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once we are finished designing the reimbursement form we can save the entire design – including the XML Schema and instance files, images, and any other associated files – in a single PXF® (Portable XML Form®). Saving the design as a PXF will enable us to email the form along with data updated in the underlying XML form among people both inside and outside the company’s LAN.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-VMZmAOAgRk8/Tylx2pKvf0I/AAAAAAAAAUs/UhLjbQI7JC4/s1600-h/clip_image009%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://lh3.ggpht.com/-O0d5WlE1mSA/Tylx2-b6WVI/AAAAAAAAAU0/Y5BiYvb0vIk/clip_image009_thumb%25255B1%25255D.png?imgmax=800" width="465" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once we hit OK we are prompted to select the files to include in the PXF. Notice that we’ve selected HTML, RTF, PDF, and Word 2007+ under the Generate and store XSLT files … heading. This will allow an end user to generate the form – with data – in these formats directly from Authentic.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-J86iYroLYSs/Tylx3NPVeCI/AAAAAAAAAVA/oL949YN13jI/s1600-h/clip_image010%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image010" border="0" alt="clip_image010" src="http://lh6.ggpht.com/-e2J8FrTol9g/Tylx3lPSJzI/AAAAAAAAAVI/MgA_NqZXJwc/clip_image010_thumb%25255B1%25255D.png?imgmax=800" width="581" height="565" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now that we’ve saved it in a PXF, the electronic form we designed in StyleVision is ready to be deployed in a business environment.&lt;/p&gt;&lt;p&gt;In our example, we have a team of salespeople working across the globe who need to request reimbursement for business and travel expenses incurred. The salespeople complete expense reports, forward them to their managers for approval, and then send approved reports to the corporate office so that the information can be added into the accounting system.&lt;/p&gt;&lt;p&gt;The PXF makes this easy.&lt;/p&gt;&lt;p&gt;Once a salesperson is ready to complete a reimbursement request, she simply opens the PXF in Authentic and can immediately begin entering information onto the form. &lt;/p&gt;&lt;p&gt;Below is a screenshot of a reimbursement form that has been completed in Authentic – notice that the form still needs a manager’s signature.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-4xV4NlMmEMM/Tylx4YLRgNI/AAAAAAAAAVQ/88HKRf0Duxc/s1600-h/clip_image011%25255B4%25255D.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://lh6.ggpht.com/-PqHJjTayqHQ/Tylx42HpMPI/AAAAAAAAAVU/WoTlq4VUg3g/clip_image011_thumb%25255B1%25255D.gif?imgmax=800" width="604" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now the salesperson must send it to her manager for approval. It’s easy to initiate an email with the form attached directly from Authentic. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-FEkZyQ8nNto/Tylx5M-76XI/AAAAAAAAAVg/KZVEed6FUts/s1600-h/clip_image013%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://lh3.ggpht.com/-nwJcmO8vH_I/Tylx7fSozXI/AAAAAAAAAVo/3wdy8d1Qztg/clip_image013_thumb%25255B1%25255D.jpg?imgmax=800" width="628" height="417" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once the manager receives the email, she can simply double click the attachment and it will open in Authentic. Here the manager has clicked the Approved check box and added her name and the date.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-txmoksF37EI/Tylx70wPKXI/AAAAAAAAAVw/8WE22SRVBj4/s1600-h/clip_image014%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://lh3.ggpht.com/-D1b3X6JNTvA/Tylx8DplILI/AAAAAAAAAV4/v-6i22w2TRE/clip_image014_thumb%25255B1%25255D.png?imgmax=800" width="604" height="527" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The manager can then email the updated PXF back to the salesperson, who in turn emails it to the corporate office so it can be imported into the accounting system for processing. Our fictitious corporate office of course receives hundreds of reimbursement requests each day and has established a process for importing them into the relevant Oracle databases in the accounting system.&lt;/p&gt;&lt;p&gt;We’ll use Altova MapForce, a graphical &lt;a href="http://www.altova.com/mapforce.html"&gt;any-to-any data mapping, conversion, and transformation tool&lt;/a&gt;, to populate the corporate database with the data from the quotations. After setting up the mapping, we’ll automatically generate code from MapForce so that we can automate the transformation either through batch processing or a real-time conversion.&lt;/p&gt;&lt;p&gt;First we’ll set up the mapping.&lt;/p&gt;&lt;p&gt;We’ve inserted the XML file ExpRpt which we’ve extracted from the PXF into the left side of the MapForce design window and then inserted the Oracle database on the right side of the design window.&lt;/p&gt;&lt;p&gt;Now we can drag and drop fields from the XML file with the reimbursement data into the Oracle database. &lt;/p&gt;&lt;p&gt;We can also transform data, as we’ve done with the Approved element. Here we’ve used the built-in boolean function to convert the string value stored in the XML file (“true” or “false”) into the numeric equivalents (1 or 0). We can also create our own functions.&lt;/p&gt;&lt;p&gt;The mapping we’ve created appears below.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ScqUKOBXByQ/Tylx8wyZcCI/AAAAAAAAAWA/-VpEFnE6YoM/s1600-h/clip_image015%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image015" border="0" alt="clip_image015" src="http://lh4.ggpht.com/-xVl2FP0BPFI/Tylx9VhN53I/AAAAAAAAAWI/7Y4ZMOGxQOw/clip_image015_thumb%25255B1%25255D.png?imgmax=800" width="590" height="437" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Please note that this post offers a very broad overview of how to use both StyleVision and MapForce. Please visit the&lt;/i&gt; &lt;a href="http://www.altova.com/aot/online-training.aspx"&gt;online training section of the Altova website&lt;/a&gt; &lt;i&gt;for more in-depth instructions on how to use these and other Altova products.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;And there you have it. With the PXF, the fictitious Nanonull Corporation allows a group of far flung sales reps and their managers to easily exchange and edit information via electronic form. The PXF also provides a way for Nanonull to populate the accounting database without offering these employees direct access to company IT systems. &lt;/p&gt;&lt;p&gt;All without busting the IT budget.   &lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;
&lt;tr&gt;         &lt;td width="109"&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;tr&gt;         &lt;td&gt;&lt;/td&gt;          &lt;td&gt;&lt;a href="http://lh4.ggpht.com/-kXPTZ2PfBl4/Tylx93gX9CI/AAAAAAAAAWQ/k_I47CdMg3I/s1600-h/clip_image016%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://lh5.ggpht.com/-FucttbFNFnU/Tylx_lbBu9I/AAAAAAAAAWY/uB0ltLgye3M/clip_image016_thumb.png?imgmax=800" width="244" height="5" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;What could your organization do with a flexible, portable interactive document? Please share your ideas with other users by commenting on this blog post. Have you used StyleVision or other Altova products in an interesting project and think it would make a great case study? Email us at &lt;a href="mailto:marketing@altova.com"&gt;marketing@altova.com&lt;/a&gt;. We’d love to hear from you!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-1373892860884191891?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/-BmjV0jN6nQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/1373892860884191891/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=1373892860884191891" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/1373892860884191891?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/1373892860884191891?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/-BmjV0jN6nQ/data-exchange-for-mobile-workforce.html" title="Data Exchange for the Mobile Workforce" /><author><name>Beth O'Brien</name><uri>http://www.blogger.com/profile/01866465171951974254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-0BIdbup1WCI/TylxslyNu9I/AAAAAAAAASw/J4lIVPv9lB0/s72-c/clip_image002_thumb%25255B2%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/02/data-exchange-for-mobile-workforce.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAEQX0_eip7ImA9WhRUE0k.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-5129654801961133446</id><published>2012-01-23T13:35:00.000-05:00</published><updated>2012-01-23T13:35:00.342-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-23T13:35:00.342-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="UML" /><category scheme="http://www.blogger.com/atom/ns#" term="data mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="user interface" /><category scheme="http://www.blogger.com/atom/ns#" term="UModel" /><category scheme="http://www.blogger.com/atom/ns#" term="v2012" /><title>Intuitive User Interface Features</title><content type="html">&lt;p&gt;Here at Altova we like to share user interface features across products to give the MissionKit a consistent look and feel, and to help users leverage experience gained using one tool to get up to speed more quickly with the others.&lt;/p&gt;  &lt;p&gt;In version 2012 we introduced new visual alignment guides in both &lt;a href="http://www.altova.com/umodel.html"&gt;UModel&lt;/a&gt; and &lt;a href="http://www.altova.com/mapforce.html"&gt;MapForce&lt;/a&gt; to make it easy to work very rapidly, yet still produce a neat, organized result that communicates effectively with other team members.&lt;/p&gt;  &lt;p&gt;As users drag elements in the diagram window, alignment snap lines appear automatically to allow any component to align with any other component.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-wo6iBjGgcxY/Tx2kmkqgBdI/AAAAAAAAAmE/W-RoJ7v4c4E/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="UML Class Diagram" border="0" alt="UML class diagram in Altova UModel" src="http://lh4.ggpht.com/-r10dveglSZE/Tx2km58HYlI/AAAAAAAAAmM/dozBgjvwpRE/clip_image001_thumb.png?imgmax=800" width="451" height="205" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the UModel class diagram shown above, the developer has collapsed the properties and operations compartments to concentrate on class associations. As the CheckingAccount subclass is dragged upwards on the screen, a visual alignment guide appears and offers instant snap-to alignment with the other subclasses of the Account class.&lt;/p&gt;  &lt;p&gt;Complex data mappings in Altova MapForce might include dozens of components, functions and constants, and visual alignment guides can help organize the mapping view. In the screenshot below, the developer used alignment guides to collect split-name functions together, while concat functions are aligned in a separate group.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-8yX1czdDR5g/Tx2knM34PjI/AAAAAAAAAmU/o7X4Q-Fk0Tk/s1600-h/clip_image002%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Altova MapForce data mapping" border="0" alt="Altova MapForce data mapping" src="http://lh3.ggpht.com/-g2pgJ1-vLAY/Tx2knVHAi8I/AAAAAAAAAmc/BXIDOtc4arI/clip_image002_thumb.png?imgmax=800" width="296" height="482" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Constructing the mapping diagram this way can greatly clarify the developer’s intent when multiple complex string manipulations are needed!&lt;/p&gt;  &lt;p&gt;Of course, aligned components also improve the value of printed diagrams that become part of the permanent documentation for UModel and MapForce projects.&lt;/p&gt;  &lt;p&gt;We also understand that not everyone likes to work the same way. If you prefer not to see guide lines and to turn off automatic alignment, this feature can be deselected in the Tools / Options menu selection in both UModel and MapForce.&lt;/p&gt;  &lt;p&gt;If you’d like to see for yourself how intuitively tools in the &lt;a href="http://www.altova.com/missionkit/software-development-tools.html"&gt;Altova MissionKit 2012&lt;/a&gt; work together, &lt;a href="http://www.altova.com/download-trial/"&gt;click here to download&lt;/a&gt; a free trial!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-5129654801961133446?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/xNcLBm9zIuo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/5129654801961133446/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=5129654801961133446" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5129654801961133446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5129654801961133446?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/xNcLBm9zIuo/intuitive-user-interface-features.html" title="Intuitive User Interface Features" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-r10dveglSZE/Tx2km58HYlI/AAAAAAAAAmM/dozBgjvwpRE/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/01/intuitive-user-interface-features.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkINRHg5cSp7ImA9WhRVEk8.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-222675669566428446</id><published>2012-01-10T10:00:00.000-05:00</published><updated>2012-01-10T14:43:15.629-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-10T14:43:15.629-05:00</app:edited><title>Get More Mileage from Your StyleVision Designs with Dynamic Selection of CSS Files</title><content type="html">&lt;span style="font-family: Calibri;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 11pt;"&gt;&lt;span style="font-family: Calibri;font-size: 11pt;"&gt;One of the great things about StyleVision is the flexibility that it affords. With StyleVision you can &lt;/span&gt;&lt;a href="http://www.altova.com/stylevision.html"&gt;&lt;span style="color: blue; font-family: Calibri; font-size: 11pt;"&gt;design visually sophisticated stylesheets and reports&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt; for output to multiple formats including HTML, PDF, and Authentic electronic forms. Now StyleVision makes it even easier to accommodate different formatting needs in a single design with dynamic selection of CSS files – a new feature introduced in &lt;/span&gt;&lt;a href="http://www.altova.com/whatsnew.html"&gt;&lt;span style="color: blue; font-family: Calibri;font-size: 11pt;"&gt;StyleVision 2012&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;font-size: 11pt;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"&gt;Although you can still manage virtually all formatting tasks from the StyleVision design itself, dynamic selection of CSS files means that you can create a single template for use in multiple situations. To demonstrate, we’ve created an invoice for the fictional Nanonull Corporation for which the design changes based on the number of days that have elapsed between the invoice issue date and the due date. Although we could have used XPath to change the formatting of each element based on the number of days that have elapsed, in this case it is more efficient to create individual CSS files that apply to different scenarios.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2DH6jtpWGkA/TwtexsvmAJI/AAAAAAAAAN4/gktiYK30CEU/s1600/SVInvoiceOverdue.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-2DH6jtpWGkA/TwtexsvmAJI/AAAAAAAAAN4/gktiYK30CEU/s1600/SVInvoiceOverdue.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"&gt;Below is the invoice that we designed in StyleVision. Notice that beyond the bold headings it is almost devoid of formatting – we’ll be applying formatting based on the number of days that have elapsed between the invoice issue date and the due date via CSS files.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1zncGKAhYGA/TwtfIXQ63CI/AAAAAAAAAOA/Ej58hobUyKg/s1600/SVInvoiceDesign.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-1zncGKAhYGA/TwtfIXQ63CI/AAAAAAAAAOA/Ej58hobUyKg/s1600/SVInvoiceDesign.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Now we can create our CSS files in XMLSpy, Altova’s &lt;/span&gt;&lt;a href="http://www.altova.com/xml-editor/"&gt;&lt;span style="color: blue; font-family: Calibri; font-size: 11pt;"&gt;XML editor&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;font-size: 11pt;"&gt; with integrated support for editing CSS2 and CSS3.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;First we’ll create a CSS file for invoices with due dates after the invoice issue date (i.e., invoices that are not overdue). Here we’ve simply created the body selector with a yellowish background and the Nanonull logo and a header class.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mbndpc9C_QA/TwtfdWUSlxI/AAAAAAAAAOI/uTo7_WMRFIs/s1600/XMLSpyCssRegular.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-mbndpc9C_QA/TwtfdWUSlxI/AAAAAAAAAOI/uTo7_WMRFIs/s1600/XMLSpyCssRegular.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Now we’ll create a more elaborate CSS for overdue invoices. The body selector will include a past due image, the paragraph selector will have 20 point bold red font, and the header and small header classes will have red bold font in different sizes.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-KgWFX2KQklg/TwtfzBAbJiI/AAAAAAAAAOQ/05Dqjw25TVE/s1600/CSSOverdue.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-KgWFX2KQklg/TwtfzBAbJiI/AAAAAAAAAOQ/05Dqjw25TVE/s1600/CSSOverdue.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Now we can assign the CSS files to the StyleVision design and subsequently assign classes to different design elements.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;In StyleVision, we simply click add new CSS file in the Design Overview and navigate to the CSS files we created in XMLSpy – StyleVision supports multiple CSS files in the same design.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Our design now looks like this – notice that formatting from both CSSRegular and CSSOverdue have been applied in StyleVision design view.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Ul1kecAW_u0/TwtgdHO1BVI/AAAAAAAAAOY/5JlWVZTwldo/s1600/SVInvoicewithCSS.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Ul1kecAW_u0/TwtgdHO1BVI/AAAAAAAAAOY/5JlWVZTwldo/s1600/SVInvoicewithCSS.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;However we would like to assign the CSS file based on the distance between the invoice issue date and the due date. Therefore, we’ll right click on the arrow next to the CSS file in the Design Overview and choose Select One CSS File with XPath (below).&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8HF6dn-DWoQ/TwtgpySS8RI/AAAAAAAAAOg/MR85xsCfxks/s1600/SelectOneCSS.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-8HF6dn-DWoQ/TwtgpySS8RI/AAAAAAAAAOg/MR85xsCfxks/s1600/SelectOneCSS.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;This will invoke the Select CSS File Using XPath dialog box (below). We can use XPath in this dialog box to select the appropriate CSS file based on dynamic input – here we’ve instructed StyleVision to use the CSSOverdue.css file if the invoice due date precedes the invoice issue date and the CSSRegular.css file in all other cases. &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-HJJmqC87QSs/Twtg7ad728I/AAAAAAAAAOo/TmzbdKUP4_Y/s1600/SelectCSSdialog.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-HJJmqC87QSs/Twtg7ad728I/AAAAAAAAAOo/TmzbdKUP4_Y/s1600/SelectCSSdialog.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Here is the complete XPath we entered into the Select CSS File Using XPath dialog box above.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wdZ5ui3cD-w/TwthFjH8e0I/AAAAAAAAAOw/aI3IE6NvJMQ/s1600/XPathSelectCSS.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-wdZ5ui3cD-w/TwthFjH8e0I/AAAAAAAAAOw/aI3IE6NvJMQ/s1600/XPathSelectCSS.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Now we can assign the classes defined in the CSS files to individual design elements in the StyleVision design. &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Here we’ve assigned the paragraph containing the text “Invoice” to the class “header “ in the Styles pane – based on the contents of our CSS files this text will appear in red 20 point bold font for overdue invoices and black 20 point bold for invoices whose due date is in the future. &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-RMtcQErqtU4/TwthWWeZRoI/AAAAAAAAAO4/jU-LSJfyNCw/s1600/SVAssignClass.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-RMtcQErqtU4/TwthWWeZRoI/AAAAAAAAAO4/jU-LSJfyNCw/s1600/SVAssignClass.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Likewise, we’ll assign the invoice due date to the class “small header.”&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Now we’re ready to preview the invoice.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;Below is the HTML preview for an overdue invoice – note that the text “Invoice” and the due date are in red bold font and that Past Due image is stamped in the middle. &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2DH6jtpWGkA/TwtexsvmAJI/AAAAAAAAAN4/gktiYK30CEU/s1600/SVInvoiceOverdue.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-2DH6jtpWGkA/TwtexsvmAJI/AAAAAAAAAN4/gktiYK30CEU/s1600/SVInvoiceOverdue.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Now let’s look at the same invoice with a due date in the future – note the yellow background, Nanonull logo, and that “Invoice” and the due date appear in black.&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-g_Lak8SS2do/Twthzrq1LXI/AAAAAAAAAPA/augs6gYDtvY/s1600/SVInvoiceRegular.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-g_Lak8SS2do/Twthzrq1LXI/AAAAAAAAAPA/augs6gYDtvY/s1600/SVInvoiceRegular.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt"&gt;The ability to select a CSS file based on dynamic input opens up a wealth of possibilities and makes your StyleVision designs even more adaptable. With this feature, you can make formatting changes on the fly via the CSS files associated with a design – especially handy for designs with many elements. &lt;/span&gt;&lt;/div&gt;&lt;hr ;="" align="center" width="33%" /&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; mso-layout-grid-align: none;"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt"&gt;Created a great project using the StyleVision stylesheet and report designer or any of Altova’s other tools and want to show it off? Please share your story with other Altova users by commenting on this blog post. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; mso-layout-grid-align: none;"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;If you think it would make a great case study please visit the &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.altova.com/case-studies.html"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="color: blue; font-family: Calibri; font-size: 11pt;"&gt;Altova case studies&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri; font-size: 11pt"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt; page – if we use your story you’ll receive a $200 Amazon gift card. We’d love to hear from you!&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-222675669566428446?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/Q1h5PQG72SI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/222675669566428446/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=222675669566428446" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/222675669566428446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/222675669566428446?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/Q1h5PQG72SI/get-more-mileage-from-your-stylevision.html" title="Get More Mileage from Your StyleVision Designs with Dynamic Selection of CSS Files" /><author><name>Beth O'Brien</name><uri>http://www.blogger.com/profile/01866465171951974254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-2DH6jtpWGkA/TwtexsvmAJI/AAAAAAAAAN4/gktiYK30CEU/s72-c/SVInvoiceOverdue.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/01/get-more-mileage-from-your-stylevision.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UFQHk_eSp7ImA9WhRWFUQ.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-7531214337121517063</id><published>2012-01-03T09:00:00.001-05:00</published><updated>2012-01-03T09:00:11.741-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-03T09:00:11.741-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CSS3" /><category scheme="http://www.blogger.com/atom/ns#" term="XMLSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML5" /><category scheme="http://www.blogger.com/atom/ns#" term="HTML editor" /><category scheme="http://www.blogger.com/atom/ns#" term="v2012" /><title>XML Editor Supports HTML5 and CSS3</title><content type="html">&lt;p&gt;The Altova MissionKit Web tools received an important update with our recent Version 2012 &lt;a href="http://www.altova.com/whatsnew.html"&gt;release&lt;/a&gt;: support for HTML5 and CSS3. You’ll find support updated to include the most recent versions of these Web standards in both XMLSpy 2012 for code editing and StyleVision 2012 for graphical stylesheet and report design. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-jax0JUfDpzg/TwIafF8lrYI/AAAAAAAAAHM/eN08gQzWlbE/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh5.ggpht.com/-5sfXSzNtvnQ/TwIafVOFPwI/AAAAAAAAAHU/sFLuhEGUFDM/clip_image001_thumb.png?imgmax=800" width="625" height="489" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Let’s focus on the HTML5 and CSS3 editors in XMLSpy here – StyleVision functionality will be covered in a future article. &lt;/p&gt; &lt;a name='more'&gt;&lt;/a&gt; &lt;h3&gt;HTML5 Editor &lt;/h3&gt;  &lt;p&gt;XMLSpy has long supported &lt;a href="http://www.altova.com/xmlspy/html-editor.html"&gt;editing of HTML4&lt;/a&gt; and, of course, XHTML – and now those intelligent coding features extend to &lt;a href="http://www.altova.com/xmlspy/html-editor.html"&gt;HTML5&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you’re already an XMLSpy user, you’ll immediately recognize the helpful syntax coloring, source folding, and line numbering in advanced Text View when you open your HTML5 file for editing. As you type, you’re presented with valid HTML5 element and attribute choices in a drop down menu as well as in static entry helper windows, so you can complete code in your preferred working style. At the same time, code completion helps you work faster while ensuring elements are closed properly. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-RgxgBoIMhPw/TwIafmCNstI/AAAAAAAAAHc/D2LIQP-TWZQ/s1600-h/clip_image002%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh5.ggpht.com/-FiiSxyESWS4/TwIaf6rzXMI/AAAAAAAAAHk/zv6_fJCY8zU/clip_image002_thumb.png?imgmax=800" width="602" height="432" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;These intelligent editing features are applicable to the version of HTML you’re working with – when you open an existing HTML5 document or start a new file from scratch, all the HTML5 elements and attributes are immediately available in the entry helper windows and drop down menu. Some of the most notable new elements in HTML5 include: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&amp;lt;video&amp;gt; and &amp;lt;audio&amp;gt; for media playback&lt;/li&gt;    &lt;li&gt;&amp;lt;canvas&amp;gt; for dynamic rendering of 2D images&lt;/li&gt;    &lt;li&gt;&amp;lt;article&amp;gt;, &amp;lt;section&amp;gt;, &amp;lt;header&amp;gt;, &amp;lt;footer&amp;gt;, and &amp;lt;nav&amp;gt; for including richer semantic information to describe content&lt;/li&gt;    &lt;li&gt;&amp;lt;calendar&amp;gt;, &amp;lt;date&amp;gt;, &amp;lt;time&amp;gt;, and other form control elements&lt;/li&gt;    &lt;li&gt;And so on&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;XMLSpy includes an integrated Browser View that lets you see the results of your HTML5 coding immediately. The Browser View renders your page using your installation of Internet Explorer directly in XMLSpy…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-0kNO6Tl3YHY/TwIagG5XUSI/AAAAAAAAAHs/6IE-jNjr_08/s1600-h/clip_image004%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh5.ggpht.com/-pCKsviIQAGk/TwIag7rr1AI/AAAAAAAAAH0/8249cz5PJyw/clip_image004_thumb.jpg?imgmax=800" width="624" height="451" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;…but also allows you to immediately view your &lt;a href="http://www.altova.com/xmlspy/html-editor.html"&gt;HTML5 Web page&lt;/a&gt; in an instance of any browser you have installed on your machine. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-VSwezP3iNvI/TwIag7aPseI/AAAAAAAAAH8/k2ZG_FSh_EE/s1600-h/clip_image005%25255B3%25255D.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh4.ggpht.com/-aXNurIQ1ZMk/TwIahNxZ5jI/AAAAAAAAAIE/xvYdxnY_894/clip_image005_thumb.gif?imgmax=800" width="340" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This allows for quick testing and debugging to ensure cross-browser compatibility. &lt;/p&gt;  &lt;p&gt;To get an idea of how some of the new HTML5 features look in action, check out the simple HTML5 example document that is supplied in the XMLSpy 2012 Examples folder and linked from the Example project. To learn more about HTML, there are many excellent resources on the Web, including &lt;a href="http://www.w3schools.com/html5/"&gt;http://www.w3schools.com/html5/&lt;/a&gt; and &lt;a href="http://dev.w3.org/html5/spec/Overview.html"&gt;http://dev.w3.org/html5/spec/Overview.html&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;CSS3 Editor&lt;/h3&gt;  &lt;p&gt;Working hand-in-hand with the &lt;a href="http://www.altova.com/xmlspy/html-editor.html"&gt;HTML5 editor&lt;/a&gt; is the XMLSpy &lt;a href="http://www.altova.com/xmlspy/css-editor.html"&gt;CSS3 editor&lt;/a&gt;, which also provides syntax coloring and entry helpers, as well as bookmarking and source folding in Text View. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-3bE7my-XCNQ/TwIahUxeFzI/AAAAAAAAAIM/d9Dg6iF9sBk/s1600-h/clip_image006%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh6.ggpht.com/-LNoidgiR7YY/TwIahqsNJuI/AAAAAAAAAIU/b8NUqBPJdVA/clip_image006_thumb.png?imgmax=800" width="602" height="424" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A CSS Outline window displays an outline of the document organized by its selectors listed in groups. Each group can be collapsed and expanded, and clicking a selector in the CSS Outline highlights it in the document. CSS Properties and HTML elements entry helpers are shown in windows as well as context sensitive drop-down menus, and XMLSpy even includes screen tips that provide a definition of each property and its possible values as you type. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-zNowLSk-LPM/TwIahhG7U1I/AAAAAAAAAIc/CTRfLtZ7D7Y/s1600-h/clip_image007%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://lh3.ggpht.com/-eHJ0waJiW90/TwIah8W1wsI/AAAAAAAAAIk/FSP-AEMGq8E/clip_image007_thumb.png?imgmax=800" width="562" height="385" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can take advantage of XMLSpy’s integrated Browser View here, too, to see the results of your &lt;a href="http://www.altova.com/xmlspy/css-editor.html"&gt;CSS edits&lt;/a&gt; immediately in a linked HTML page. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-BWRgsCJ-TCo/TwIaiLS6kRI/AAAAAAAAAIs/yDO9PQ9OFWY/s1600-h/clip_image008%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh4.ggpht.com/-PL_B4u9JMYQ/TwIaier4TyI/AAAAAAAAAI0/c4a1RPdfrto/clip_image008_thumb.png?imgmax=800" width="570" height="506" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Why XMLSpy for HTML? &lt;/h3&gt;  &lt;p&gt;Sure, XMLSpy is known for all things XML, but it’s also a clear choice for HTML development. HTML5 and CSS3 editing in XMLSpy is facilitated by support for related technologies including XML, XSLT, WSDL, and others, as well as integrated project management functionality, support for popular version/source control systems, and Microsoft&lt;sup&gt;®&lt;/sup&gt; SharePoint&lt;sup&gt;®&lt;/sup&gt; Server integration – giving you all the tools you need to develop the next generation of Web sites and apps.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We’d love to hear how you’re using HTML5 now – please drop us a line by leaving a comment below. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-7531214337121517063?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/UoryVI7N56s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/7531214337121517063/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=7531214337121517063" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/7531214337121517063?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/7531214337121517063?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/UoryVI7N56s/xml-editor-supports-html5-and-css3.html" title="XML Editor Supports HTML5 and CSS3" /><author><name>Erin Cavanaugh</name><uri>http://www.blogger.com/profile/05488702872055566047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_C4xYMtGRX-M/SYie9G7vVdI/AAAAAAAAABE/7MnFXMC-iy8/S220/Erin.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-5sfXSzNtvnQ/TwIafVOFPwI/AAAAAAAAAHU/sFLuhEGUFDM/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2012/01/xml-editor-supports-html5-and-css3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04HSH0yfSp7ImA9WhRXE0Q.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-7477558738956657062</id><published>2011-12-20T10:30:00.000-05:00</published><updated>2011-12-20T11:52:19.395-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-20T11:52:19.395-05:00</app:edited><title>New in StyleVision 2012 – Composite Styles for Enhanced Formatting</title><content type="html">&lt;div&gt;
StyleVision is an intuitive stylesheet and report designer that transforms XML, XBRL, and database content into HTML, RTF, PDF, Word 2007+, and Authentic electronic forms – all from a single design. With the 2012 release (&lt;a href="http://www.altova.com/download/stylevision/db_xslt_stylesheet_designer_enterprise.html" target="_blank"&gt;available for download here&lt;/a&gt;), StyleVision now offers even more formatting control so that you can design even more visually sophisticated output. &lt;br /&gt;
&lt;br /&gt;
One of the more versatile features introduced in StyleVision 2012 is support for composite styles for output to RTF, Word, and PDF as well as HTML and Authentic electronic forms. This feature allows you to combine styles defined in an XML instance document with those you set in the report itself. You can also build a composite with XPath to control multiple style features of the same design element (e.g., font, background color, alignment). &lt;br /&gt;
&lt;br /&gt;
Support for composite styles means that you can quickly and easily change the look of a design component by selecting an attribute from the XML instance file or by changing the XPath expression. This feature is used most often in cases where the XML document includes HTML fragments that contain style information – now you can use an XPath selector to extract style information from the HTML fragment and apply it directly to an output document.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;Here for example we’ve used XMLSpy, Altova’s &lt;a href="http://www.altova.com/xmlspy.html" target="_blank"&gt;XML editor&lt;/a&gt; and development environment, to create an XML instance file containing the contents of a music library. (We also created the Schema in XMLSpy.)&lt;br /&gt;
&lt;br /&gt;
The StyleIt attribute of the Recording element pictured below includes formatting instructions for this individual recording – according to our file the Fun Factory recording should be red and bolded.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://4.bp.blogspot.com/-S01r32MTlZI/TvCanBTpdNI/AAAAAAAAANQ/pW5NWSHueBk/s1600/XMLSpyMusicArchiveInstance.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5688216324525356242" src="http://4.bp.blogspot.com/-S01r32MTlZI/TvCanBTpdNI/AAAAAAAAANQ/pW5NWSHueBk/s1600/XMLSpyMusicArchiveInstance.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Now we can move to StyleVision and start creating a design based on our XML instance document.&lt;br /&gt;
&lt;br /&gt;
All we need to do to apply the formatting instructions in the XML instance document is to call the StyleIt attribute from the composite style drop down in the Properties pane in our StyleVision design.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://3.bp.blogspot.com/-QLJIfQ19mew/TvCdcsP9wkI/AAAAAAAAANg/IUHtsnItzPk/s1600/Snap1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-QLJIfQ19mew/TvCdcsP9wkI/AAAAAAAAANg/IUHtsnItzPk/s1600/Snap1.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The Fun Factory recording appears in red bold in the resulting output.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://3.bp.blogspot.com/-sG_7Lc_ulXE/TvCc_Z4OcgI/AAAAAAAAANY/JnhzpoSDvtQ/s1600/SVPlaylistPlain.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-sG_7Lc_ulXE/TvCc_Z4OcgI/AAAAAAAAANY/JnhzpoSDvtQ/s1600/SVPlaylistPlain.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
We can also choose to ignore the formatting instructions from the instance file and provide our own.&lt;br /&gt;
&lt;br /&gt;
Here we’ve replaced the StyleIt attribute in the drop down list with an XPath if-then-else statement that assigns formatting based on an attribute of the Recording element called PlaylistCode – party tunes are in blue Papyrus 12 point font, easy listening favorites are in maroon Pristina 14 point font, and background music by default is in green Onyx 14 point font.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-Z4I2lNne6f8/TvCd69B5W-I/AAAAAAAAANo/84qsmL0In7w/s1600/SVXPathCompStyle.png" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Z4I2lNne6f8/TvCd69B5W-I/AAAAAAAAANo/84qsmL0In7w/s1600/SVXPathCompStyle.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here’s what the output file looks like now.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="http://1.bp.blogspot.com/-enPnw58b3EA/TvCeTFe-NmI/AAAAAAAAANw/k3ipKd9COLk/s1600/SVPlaylistCompStyleXPath.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-enPnw58b3EA/TvCeTFe-NmI/AAAAAAAAANw/k3ipKd9COLk/s1600/SVPlaylistCompStyleXPath.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Support for composite styles is only one of the new styling features in the StyleVision 2012 stylesheet and report designer. &lt;a href="http://www.altova.com/whatsnew.html" target="_blank"&gt;Click here to read more about the new features&lt;/a&gt; across the entire Altova product line.&lt;br /&gt;
&lt;br /&gt;
&lt;hr align="center" width="50%" /&gt;
&lt;br /&gt;
Have you used created a great project using the StyleVision stylesheet and report designer or any of Altova’s other tools? Want to show it off? Please share your story with other Altova users by commenting on this blog post. If you think it would make a great case study please visit the &lt;a href="http://www.altova.com/case-studies.html" target="_blank"&gt;Altova case studies&lt;/a&gt; page – if we use your story you’ll receive a $200 Amazon gift card. We’d love to hear from you! &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-7477558738956657062?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/Dj-nyO3N6ts" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/7477558738956657062/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=7477558738956657062" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/7477558738956657062?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/7477558738956657062?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/Dj-nyO3N6ts/new-in-stylevision-2012-composite.html" title="New in StyleVision 2012 – Composite Styles for Enhanced Formatting" /><author><name>Beth O'Brien</name><uri>http://www.blogger.com/profile/01866465171951974254</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-S01r32MTlZI/TvCanBTpdNI/AAAAAAAAANQ/pW5NWSHueBk/s72-c/XMLSpyMusicArchiveInstance.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2011/12/new-in-stylevision-2012-composite.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcMQH0-eSp7ImA9WhRQGUg.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-5835626355868267126</id><published>2011-12-15T09:08:00.000-05:00</published><updated>2011-12-15T09:08:01.351-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-15T09:08:01.351-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FlowForce Server" /><category scheme="http://www.blogger.com/atom/ns#" term="data mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="data integration" /><title>Announcing Altova FlowForce® Server Beta 1</title><content type="html">&lt;p&gt;Altova FlowForce® Server Beta 1 is an exciting new tool for execution of automated data mappings designed to provide comprehensive management and control over data transformations performed by dedicated high-speed servers, virtual machines, or even regular workstations, depending on the size of the task.&lt;/p&gt;  &lt;p&gt;To gather user input and accelerate product development, Altova is offering &lt;a href="http://www.altova.com/flowforce.html"&gt;Altova FlowForce Server Beta 1&lt;/a&gt; as a free public beta test to all licensed users of Altova MapForce® 2012 Enterprise Edition and MapForce® 2012 Professional Edition.&lt;/p&gt;  &lt;p&gt;Users employ &lt;a href="http://www.altova.com/mapforce.html"&gt;Altova MapForce&lt;/a&gt; data mappings for two different types of data transformations:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;One-time data conversions&lt;/li&gt;    &lt;li&gt;Data transformations that are repeated by date or time, when new source data is available, or based on some other external event&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;While command-line execution, royalty-free code generation, and the MapForce API can assist with automation of repeated transformations, FlowForce Server Beta 1 provides much greater power and flexibility. FlowForce Server Beta 1 is a server-based tool with a Web interface that makes it much easier to implement, manage, or modify data transformation jobs in a busy data processing environment.&lt;/p&gt;  &lt;p&gt;FlowForce Server Beta 1 can administer multiple transformation jobs simultaneously, lets users define and adjust a variety of job triggers and actions on the fly, can perform housekeeping tasks like moving output files or cleaning up intermediate work, records detailed logs of all activity, and much more.&lt;/p&gt;  &lt;p&gt;FlowForce Server Beta 1 consists of four components that work together as illustrated in the diagram below. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-k2O0vlSvxV4/TufBdQ7u0qI/AAAAAAAAAls/Bm2DteIc0uQ/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Altova FlowForce Server Beta 1 " border="0" alt="Altova FlowForce Server Beta 1 block diagram" src="http://lh3.ggpht.com/-9SPMP_nc2Sw/TufBdoSVqAI/AAAAAAAAAl0/pzraYuAsVSg/clip_image001_thumb.png?imgmax=800" width="349" height="461" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The &lt;b&gt;FlowForce Server&lt;/b&gt; continuously checks for trigger conditions, starts and monitors job execution, and writes detailed logs. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;MapForce Server&lt;/b&gt; is an implementation of the MapForce Built-in execution engine that executes mapping packages previously deployed via the MapForce graphical environment. &lt;/p&gt;  &lt;p&gt;The &lt;b&gt;FlowForce Web Administration Interface&lt;/b&gt; is a standalone web application that runs in an internet browser and provides the front-end of FlowForce Server. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;MapForce Beta&lt;/b&gt; is an enhanced version of the Altova MapForce application with an integrated deployment feature to deploy MapForce data mappings to a FlowForce server package.&lt;/p&gt;  &lt;p&gt;Altova FlowForce Server Beta 1 is available immediately as a free public beta test to all licensed users of Altova MapForce® 2012 Enterprise Edition and MapForce® 2012 Professional Edition.&lt;/p&gt;  &lt;p&gt;Visit the &lt;a href="http://www.altova.com/flowforce.html"&gt;FlowForce Server Beta 1&lt;/a&gt; page at the &lt;a href="http://www.altova.com"&gt;Altova Web site&lt;/a&gt; for more information!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-5835626355868267126?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/gRNKEArOnQI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/5835626355868267126/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=5835626355868267126" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5835626355868267126?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5835626355868267126?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/gRNKEArOnQI/announcing-altova-flowforce-server-beta.html" title="Announcing Altova FlowForce® Server Beta 1" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-9SPMP_nc2Sw/TufBdoSVqAI/AAAAAAAAAl0/pzraYuAsVSg/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2011/12/announcing-altova-flowforce-server-beta.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAEQXk_fip7ImA9WhRRFEg.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-1884353189616988213</id><published>2011-11-28T00:05:00.000-05:00</published><updated>2011-11-28T00:05:00.746-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-28T00:05:00.746-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="StyleVision" /><category scheme="http://www.blogger.com/atom/ns#" term="XMLSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="data mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="data integration" /><title>Processing the Groupon API – Epilogue</title><content type="html">&lt;p&gt;Rare edge cases can derail loosely coupled data mapping applications. This is especially true when you are consuming large datasets available over the Internet and have little or no influence over the source data.&lt;/p&gt;  &lt;p&gt;In this article we describe a debugging technique that lets developers working on data mapping and transformation projects quickly identify and accommodate unexpected data in a stream from a remote source.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;The Problem&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Last summer we wrote a series of blog posts describing how to &lt;a href="http://blog.altova.com/2011/08/processing-groupon-api-with-altova.html"&gt;work with the Groupon API&lt;/a&gt; to retrieve a subset of offers in all Groupon cities and format the list for a web browser or mobile device.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Q5Fuliv98jw/Tspu06W2rTI/AAAAAAAAAjw/Y1zVMdAW1JQ/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MapForce output from the Groupn API" border="0" alt="MapForce output from the Groupn API, displayed on a mobile device" src="http://lh4.ggpht.com/-QZjPbYC7-LA/Tspu1d6EDiI/AAAAAAAAAj4/yCjai-3pxpU/clip_image001_thumb.png?imgmax=800" width="296" height="386" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We concluded with a command line to run a MapForce data mapping that calls the Groupon API over 150 times -- once for each Groupon city, then filters the data to extract deals sold on the Internet instead of a physical location, and formats the results in HTML using StyleVision. Every morning we run the command line in a batch file that saves the HTML output on a local server so our colleagues can check it out with any Web browser to find interesting offers from all over the country.&lt;/p&gt;  &lt;p&gt;The mapping ran fine for more than two months until one day it failed with this error message: “Source-value “” of type dateTime could not be converted into target-type dateTime.” &lt;/p&gt;  &lt;a name='more'&gt;&lt;/a&gt;  &lt;p&gt;The specific explanation is that somewhere in the mapping where we expected a dateTime, we received an empty value. On a more abstract level, the error suggests a potential defect in the logic of our mapping strategy.&lt;/p&gt;  &lt;p&gt;Every time we call the Groupon API we receive a well-formed XML data stream enclosed in a &amp;lt;response&amp;gt; element, but the API specs do not include an XML Schema defining the data that may be returned. When we developed our mapping we needed to analyze the raw data and select the output we wanted, so our first step was to call the API to capture all the Groupon deals for one large metro area.&lt;/p&gt;  &lt;p&gt;We assumed we would get a large enough data sample to include every possible option in the API response. After our mapping ran successfully for two months, the API finally delivered a rare edge case that did not fit the pattern we expected.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Debugging Tools&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;MapForce provides debugging help. We can run our data mapping using the MapForce built in execution engine to see more details in the Messages window.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-aaLuFh8g-5o/Tspu1iP_n7I/AAAAAAAAAkA/SZcyqjCaUiw/s1600-h/clip_image002%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MapForce Messages window" border="0" alt="MapForce Messages window siplays data mapping error" src="http://lh6.ggpht.com/-b1cUWq4TO6s/Tspu1zjU9tI/AAAAAAAAAkI/F1fqK3mu1H4/clip_image002_thumb.png?imgmax=800" width="477" height="165" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The lines labeled Related location are hyperlinked back to components in the mapping where the error occurred. Clicking on the &lt;u&gt;result&lt;/u&gt; error takes us to a format-dateTime function.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-tGo-OsyDmA8/Tspu2IqSEII/AAAAAAAAAkQ/rWCM52S3hWY/s1600-h/clip_image003%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MapForce format-dateTime function" border="0" alt="format-dateTime function in MapForce" src="http://lh6.ggpht.com/-K3r_SwpjT_o/Tspu2o6VB_I/AAAAAAAAAkY/sPBjmx1X1Mk/clip_image003_thumb.png?imgmax=800" width="345" height="138" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We can either click the &lt;u&gt;“”&lt;/u&gt; error or trace the value connector to identify the input element to the format-dateTime function. Either way, we locate the element that triggered the error.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-ABexBoUezwE/Tspu2_oTjOI/AAAAAAAAAkg/3Boath9vSdg/s1600-h/clip_image004%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh3.ggpht.com/-YHrc-ebzcN8/Tspu3HEowtI/AAAAAAAAAko/RRHKpl_y2QE/clip_image004_thumb.png?imgmax=800" width="267" height="359" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The suspect element resides in the input component that captures all the data returned by our calls to the Groupon API before any filtering or conversion takes place. When we designed the mapping, the endAt element in our sample data always reported the ending date and time for each Groupon offer, but for some reason we must have received an empty value in this field.&lt;/p&gt;  &lt;p&gt;If the error had occurred by running a local input file we could simply examine the file contents, but in this case the data came from multiple URLs, and is only held temporarily until it is mapped to the output component. &lt;/p&gt;  &lt;p&gt;Fortunately, we can apply a trick to easily modify the mapping and preserve all data received from the Groupon API. We simply copy the input component and paste a duplicate into the mapping. We can connect the response element from the original to the duplicate, which simultaneously maps all the child elements between the components.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-5mRDG72tuHY/Tspu3StJOhI/AAAAAAAAAkw/Z1EnXl8bWgY/s1600-h/clip_image005%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh6.ggpht.com/-zirg0u2c5-s/Tspu32QIMOI/AAAAAAAAAk4/qEknuzEA-yY/clip_image005_thumb.png?imgmax=800" width="477" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Our original input component is now connected to two output components. We can select which output component will be generated by the MapForce built-in execution engine by clicking the eye icon at the top right corner of any output component. The new output component simply saves a copy of everything in the input component.&lt;/p&gt;  &lt;p&gt;When we examine the raw data using XMLSpy, sure enough we find an empty element where we expected a date and time:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-xYA8oU0hbYw/Tspu4KpB3oI/AAAAAAAAAlA/zE-fh7-uvGE/s1600-h/clip_image006%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh6.ggpht.com/-VkHxtsBRdIk/Tspu4haNB5I/AAAAAAAAAlI/G70KMzzM4io/clip_image006_thumb.png?imgmax=800" width="159" height="22" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;The Solution&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Now that we know an offer might have no specific end time, we can plan for that possibility in the mapping. In the revised treatment of the endAt element, we do an if-test before the original format-dateTime function and provide an alternate output when the endAt element is empty.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-4lj33Go9j2A/Tspu41hgGTI/AAAAAAAAAlQ/3yT89qXGqRc/s1600-h/clip_image007%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://lh3.ggpht.com/-0Uh2-8whtOQ/Tspu5Lxkh5I/AAAAAAAAAlY/n78OuQLIJ-s/clip_image007_thumb.png?imgmax=800" width="595" height="225" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We had to work fast because all Groupon data is time sensitive. The edge case would eventually expire and disappear from the data stream. This experience showed us how important it is to have powerful debugging tools and to use them creatively, even after you think a data mapping project is running successfully!&lt;/p&gt;  &lt;p&gt;Altova MapForce is &lt;a href="http://www.altova.com/download-trial/"&gt;available in a free trial&lt;/a&gt; – the next edge case you solve could be your own. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Editor’s Note:&lt;/b&gt; Our original series on mapping data from the Groupon API ran in three parts you can see by clicking the links here:&lt;/p&gt;  &lt;p&gt;Part 1 of &lt;a href="http://blog.altova.com/2011/08/processing-groupon-api-with-altova.html"&gt;Processing the Groupon API with Altova MapForce&lt;/a&gt; describes how to create dynamic input by collecting data from multiple URLs.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.altova.com/2011/08/processing-groupon-api-with-mapforce.html"&gt;Processing the Groupon API with MapForce – Part 2&lt;/a&gt; describes how we filtered data from the API and defined the output to extract only the most interesting details.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.altova.com/2011/08/processing-groupon-api-part-3.html"&gt;Processing the Groupon API – Part 3&lt;/a&gt; describes formatting the output as a single HTML document optimized for desktop and mobile devices, and reviews ways to automate repeat execution. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-1884353189616988213?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/8HfeRexfkLA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/1884353189616988213/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=1884353189616988213" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/1884353189616988213?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/1884353189616988213?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/8HfeRexfkLA/processing-groupon-api-epilogue.html" title="Processing the Groupon API – Epilogue" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-QZjPbYC7-LA/Tspu1d6EDiI/AAAAAAAAAj4/yCjai-3pxpU/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2011/11/processing-groupon-api-epilogue.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMAQXs7eCp7ImA9WhRSGUs.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-5849940408369314953</id><published>2011-11-22T06:00:00.002-05:00</published><updated>2011-11-22T06:14:00.500-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-22T06:14:00.500-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="charts" /><category scheme="http://www.blogger.com/atom/ns#" term="data mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="FlexText" /><category scheme="http://www.blogger.com/atom/ns#" term="XML charts" /><title>Analyze Football Statistics using the Altova MissionKit</title><content type="html">&lt;p&gt;In this article we use stats from &lt;a href="http://www.nfl.com/"&gt;NFL.com&lt;/a&gt; and &lt;a href="http://espn.go.com/"&gt;ESPN.com&lt;/a&gt; to show how easy it can be to process and analyze online data in new ways – even when it uses different metrics and is only available in textual format. &lt;/p&gt;  &lt;p&gt;We have seen in previous blog posts how easy it is to gather data from the Internet that is widely available in XML formats. But what about interesting data that is available online but not in an XML format, or data that is buried in legacy data processing systems and only available in textual report format? &lt;/p&gt;  &lt;p&gt;One such example involves quarterback ratings. The NFL has used a Passer Rating that rates quarterbacks solely based on a passer’s completions, attempts, touchdowns, and interceptions. ESPN introduced a new rating system this year called the Total QBR (Quarterback Rating). The Total QBR incorporates more data, including an expected points average and a clutch play index, that ESPN claims gives a more accurate measure of a quarterback’s performance.&lt;/p&gt;  &lt;p&gt;Let’s compare the rankings that these system produce to see if we can garner some useful information. For this example we’ll be using the data importing and analysis tools of the Altova MissionKit to compare the ratings. If you want to try this out yourself, the MissionKit is available to &lt;a href="http://www.altova.com/download-trial/"&gt;download for a 30 day free trial&lt;/a&gt; from the Altova web site. You can access the files used in this example &lt;a href="http://www.altova.com/library/Analyze_Football_Stats.zip"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The first thing we need is the raw data to analyze. Let’s use the entire 2010 season as a data source. We can get the table with &lt;a href="http://www.nfl.com/stats/categorystats?archive=true&amp;amp;conference=null&amp;amp;statisticCategory=PASSING&amp;amp;season=2010&amp;amp;seasonType=REG&amp;amp;experience=null&amp;amp;tabSeq=0&amp;amp;qualified=true&amp;amp;Submit=Go"&gt;Passer Ratings from NFL.com&lt;/a&gt; and then copy and paste it as a new text file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.nfl.com/stats/categorystats?archive=true&amp;amp;conference=null&amp;amp;statisticCategory=PASSING&amp;amp;season=2010&amp;amp;seasonType=REG&amp;amp;experience=null&amp;amp;tabSeq=0&amp;amp;qualified=true&amp;amp;Submit=Go" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="NFL.com_top5_passers_2010" border="0" alt="NFL.com_top5_passers_2010" src="http://lh4.ggpht.com/-NFI7wG2wUrs/TsZmOXa00FI/AAAAAAAAAJE/uCkScVLIjuI/NFL_top5_passers%25255B12%25255D.png?imgmax=800" width="606" height="261" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We can access a similar &lt;a href="http://espn.go.com/nfl/story/_/id/6834591/nfl-tom-brady-led-nfl-qbr-2010-season"&gt;table of Total Quarterback Ratings from the ESPN web site&lt;/a&gt; and create a second text file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://espn.go.com/nfl/story/_/id/6834591/nfl-tom-brady-led-nfl-qbr-2010-season"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="ESPN_Total_QBR_Top5_2010" border="0" alt="ESPN_Total_QBR_Top5_2010" src="http://lh6.ggpht.com/--qirc5-52q4/TsZmOv717GI/AAAAAAAAAJM/Ve-k_TN3hjY/QBR_Top5%25255B6%25255D.png?imgmax=800" width="606" height="191" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We now have two text files with tables of data in different orders. The next step is to combine the tables into one file and generate charts. &lt;/p&gt; &lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;First, we need a schema file for the destination of the data. In XMLSpy, we can create an XSD file quickly, and graphically, to contain a series of QB nodes with child nodes of first and last name, team, passer rating and rank, and total QBR and rank.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-qXpexJy1EGU/TsZmOxjUSII/AAAAAAAAAJU/FT2UQU_yVgw/s1600-h/QB_Schema%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="QB_Schema.xsd" border="0" alt="QB_Schema.xsd" src="http://lh3.ggpht.com/-9h9gpOW-kqU/TsZmPXj_F7I/AAAAAAAAAJc/_DHTF90Sv5E/QB_Schema_thumb%25255B4%25255D.png?imgmax=800" width="606" height="466" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, in MapForce, we open the text documents and use FlexText to parse the text and change it into a list of categories.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-mh92ItHpYW4/TsZmPvKSwaI/AAAAAAAAAJk/tUpiq04Nabo/s1600-h/NFL_QB_Data_FlexText%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NFL_QB_Data_FlexText" border="0" alt="NFL_QB_Data_FlexText" src="http://lh3.ggpht.com/-npZOeSDInk8/TsZmP7U5MLI/AAAAAAAAAJs/WHiPtNpWqIc/NFL_QB_Data_FlexText_thumb%25255B2%25255D.png?imgmax=800" width="606" height="569" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-KhYTL2EEOws/TsZmQSUo9yI/AAAAAAAAAJ0/PA_XAqBd1kI/s1600-h/Total_QBR%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Total_QBR" border="0" alt="Total_QBR" src="http://lh3.ggpht.com/-27iEt2-Jsnc/TsZmQl8KVkI/AAAAAAAAAJ8/wpo08a8R-Tg/Total_QBR_thumb%25255B1%25255D.png?imgmax=800" width="606" height="548" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We then build a mapping file in MapForce to map the data from the text files to the destination XML file. Built-in functions make it easy to extract the first and last names from the Player string, and a value-map will change the team abbreviation to a string (ARI is changed to Arizona Cardinals, ATL to Atlanta Falcons, etc.). We set the Priority Context in the test of our filters to make sure we get the correct set of data for each unique quarterback.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-jOytwVfR0SA/TsZmRJYIzRI/AAAAAAAAAKE/NBETC3PmYoc/s1600-h/QB_Schema%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="QB_Schema" border="0" alt="QB_Schema" src="http://lh5.ggpht.com/-vVdpMSTjr7g/TsZmRelhLqI/AAAAAAAAAKM/_HYG6G38x58/QB_Schema_thumb%25255B6%25255D.png?imgmax=800" width="606" height="504" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once we execute the mapping, we can save the resulting XML data file and use it as the source file in StyleVision to design a stylesheet. In this stylesheet, we create a table of the top ten ranked passers and charts showing the Passer Rating and the Total QBR graphically.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-K08g7lYmPTo/TsZmRvA_AxI/AAAAAAAAAKU/MjdwKcOXYA8/s1600-h/QB_Charts1%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="QB_Charts1" border="0" alt="QB_Charts1" src="http://lh4.ggpht.com/--dzB3khn8Bs/TsZmSR90j9I/AAAAAAAAAKc/NdQ_e0U9cxc/QB_Charts1_thumb.png?imgmax=800" width="606" height="247" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-ES18REY87K4/TsZmSs7KsBI/AAAAAAAAAKk/NpHX2YcUR2k/s1600-h/QB_Charts2%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="QB_Charts2" border="0" alt="QB_Charts2" src="http://lh6.ggpht.com/-olKarjh0n3c/TsZmSy4ocyI/AAAAAAAAAKs/6gGgwbA-R6g/QB_Charts2_thumb%25255B1%25255D.png?imgmax=800" width="606" height="673" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now that we have a visual representation of the rankings of the two rating systems, we can examine their differences and try to see which works better. For example, Peyton Manning was tenth in passer rating, but was second in Total QBR. This can be explained by the Total QBR taking clutch points into account and knowing that Peyton Manning had a few late game comebacks in the 2010 season.&lt;/p&gt;  &lt;p&gt;Since we now have a collection of &lt;a href="http://www.altova.com/library/Analyze_Football_Stats.zip"&gt;files (the XSD file built in XMLSpy, the FlexText and mapping files from MapForce, and the stylesheet design created in StyleVision)&lt;/a&gt;, we can update the text data files easily to analyze new sets of quarterback data. Later in the season, we can update the text tables with 2011 data, and allow the data to flow through the mappings and into the stylesheet to update the charts and see the rankings for the current season.&lt;/p&gt;  &lt;p&gt;This example focuses on numbers from the NFL, but this method can easily be adapted to other data sets and data sources that are accessed as text files as well as in other formats.&lt;/p&gt;  &lt;p&gt;You can learn more about how to use the products in the Altova MissionKit by taking our &lt;a href="http://www.altova.com/aot/online-training.aspx"&gt;free online training courses&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-5849940408369314953?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/RaT4SWMQP1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/5849940408369314953/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=5849940408369314953" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5849940408369314953?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5849940408369314953?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/RaT4SWMQP1U/analyze-football-statistics-using.html" title="Analyze Football Statistics using the Altova MissionKit" /><author><name>Adam Heyman</name><uri>http://www.blogger.com/profile/08813263305350224662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://4.bp.blogspot.com/-QfISubrnC_E/Tf-Sk8ObimI/AAAAAAAAAFk/UFKXSmNGSvM/s220/Adam.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-NFI7wG2wUrs/TsZmOXa00FI/AAAAAAAAAJE/uCkScVLIjuI/s72-c/NFL_top5_passers%25255B12%25255D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://blog.altova.com/2011/11/analyze-football-statistics-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08NQ3Y5cCp7ImA9WhRSFU4.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-5772807914299593769</id><published>2011-11-17T00:02:00.001-05:00</published><updated>2011-11-17T09:24:52.828-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T09:24:52.828-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="StyleVision" /><category scheme="http://www.blogger.com/atom/ns#" term="data mapping" /><category scheme="http://www.blogger.com/atom/ns#" term="DatabaseSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="database reports" /><category scheme="http://www.blogger.com/atom/ns#" term="database charts" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><title>Mastering Paid Keywords</title><content type="html">&lt;p&gt;Anyone who manages paid keyword search knows it is hard work! You can look at vast reports of raw statistics and quickly get lost in trivia. At Altova we designed a better way to analyze and &lt;a&gt;manage&lt;/a&gt; the performance data for our Google Adwords campaigns. We can creatively query the numbers to: &lt;/p&gt;  &lt;p&gt;· Quickly aggregate results for subcategories of campaigns, for instance by product, geographical region, or any other grouping&lt;/p&gt;  &lt;p&gt;· Easily identify trends over time&lt;/p&gt;  &lt;p&gt;The chart below illustrates these advantages by collecting data for a single Altova product – SemanticWorks – from multiple campaigns over six individual months.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-5_M9E2IJeKA/TsEyMZJEp7I/AAAAAAAAAhk/OdNi4UKwEcA/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DatabaseSpy Keyword Performance chart" border="0" alt="Keyword performance chart created with DatabaseSpy" src="http://lh3.ggpht.com/-yMMFhKaKSUk/TsEyMl8Pz6I/AAAAAAAAAhs/VMs8ITL7enk/clip_image001_thumb.png?imgmax=800" width="542" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Starting Out&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Like many keyword advertisers, we were viewing statistics in Adwords, downloading CSV files, then spending hours massaging and manipulating the data in spreadsheets to identify and format the information we required.&lt;/p&gt;  &lt;p&gt;We wanted more immediate and in-depth reporting of keyword performance while retaining full control of the process and managing everything internally. SQL queries of a database of keyword statistics offer a powerful and flexible alternative. &lt;/p&gt;  &lt;p&gt;In the remainder of this post we explain how the database design, data mapping, and reporting features of the Altova MissionKit can be applied to create an architecture to efficiently track paid keyword performance.&lt;/p&gt;  &lt;a name='more'&gt;&lt;/a&gt;  &lt;p&gt;&lt;b&gt;Database Design&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Our choices were to implement a keywords database on an existing database platform already running in the company, an express edition of a commercial database, or an open-source database, since the Altova MissionKit works with SQL Server®, MySQL®, Oracle®, IBM DB2®, PostgreSQL®, Sybase®, and Microsoft® Access®.&lt;/p&gt;  &lt;p&gt;We chose SQL Server for our database platform. We connected with DatabaseSpy and used the graphical database Design Editor to create the table shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-7ffrQK9RSsk/TsEyMwTiupI/AAAAAAAAAh0/JgKPtJKJl1c/s1600-h/clip_image002%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DatabaseSpy graphical table design" border="0" alt="DatabaseSpy graphical table design" src="http://lh3.ggpht.com/-BFYkOzdYvEA/TsEyNR4o4YI/AAAAAAAAAh8/uFoBA9mAqxE/clip_image002_thumb.png?imgmax=800" width="360" height="521" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Most columns correspond to fields in a keywords report. In order to store multiple rows for each individual keyword – one row for every month of statistics – the table also includes columns for the month and year.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Populating the Table&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The Google Adwords online interface lets users create reports of keyword statistics of specific date ranges and download them as CSV files. We downloaded individual CSV files containing our performance data for each unique month.&lt;/p&gt;  &lt;p&gt;We used MapForce to map values from the CSV files to columns in the database table and insert the month and year data for each row. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Av7OpAZHJvI/TsEyNrhjcHI/AAAAAAAAAiE/gceuhWugGew/s1600-h/clip_image003%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MapForce database mapping" border="0" alt="Keyword report mapping in MapForce" src="http://lh3.ggpht.com/-e5lbSynHAeU/TsEyOC65MUI/AAAAAAAAAiM/8eVx6YM_suU/clip_image003_thumb.png?imgmax=800" width="585" height="830" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The string functions at the bottom center of the mapping diagram remove percent signs and commas from fields we want to treat as numerical data. By doing this in the mapping, we don’t have to massage the columns of data in the CSV files before importing them.&lt;/p&gt;  &lt;p&gt;Since the CSV files for each month all have the same structure, the mapping needs only minor revisions to import each new month’s data: update the constants at the top that define the starting row id, month, and year.&lt;/p&gt;  &lt;p&gt;MapForce processes the mapping with its built-in execution engine, reading the CSV input and generating SQL INSERT statements for each row of data. MapForce then allows users to execute the entire generated SQL script by clicking a toolbar icon or from a selection in the Output menu:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-JYX4RKO1-VU/TsEyOfyeAXI/AAAAAAAAAiU/DPzfSRAzojE/s1600-h/RunWithScriptNew%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MapForce database insert script" border="0" alt="MapForce database insert script" src="http://lh4.ggpht.com/-y752gdsb-Yo/TsEyOoFYVLI/AAAAAAAAAic/f9vGFqBchO8/RunWithScriptNew_thumb.png?imgmax=800" width="561" height="662" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Querying the Database&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Back in DatabaseSpy, we can query the database from the SQL Editor window. This query reports the top ten performing keywords for SemanticWorks in October 2011. For data privacy, some fields in the Results chart are hidden. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-KkK7_KSN5aE/TsEyPLPwH-I/AAAAAAAAAik/0IZWt0_oXmI/s1600-h/Results%252520with%252520table%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Results with table" border="0" alt="Results with table" src="http://lh4.ggpht.com/-8UMIq-cmez4/TsEyPXLJ1mI/AAAAAAAAAis/O2y4e_u_dec/Results%252520with%252520table_thumb.png?imgmax=800" width="582" height="638" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To get additional interesting results, the SQL statement can be easily modified. For instance, the ORDER BY line can sort for highest cost, most clicks, or any other characteristic.&lt;/p&gt;  &lt;p&gt;The WHERE statement combines data from multiple campaigns. The LIKE keyword treats the percent signs around SemanticWorks as wildcard characters to match any campaign with SemanticWorks anywhere in its name. Other queries could add a geographic identifier such as US or EU, or match on an entirely different column such as adgroup. Of course, all these options depend on a consistent and predictable campaign and adgroup naming system.&lt;/p&gt;  &lt;p&gt;We created a DatabaseSpy Project to collect all our favorite SQL queries for sharing and convenient reuse. Here is the query we used to generate the chart right in DatabaseSpy that appears at the top of this post:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-98YNO4P9NbU/TsEyPydrfZI/AAAAAAAAAi0/YxBkFo_kg4I/s1600-h/ChartQueryCapture%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="ChartQueryCapture" border="0" alt="ChartQueryCapture" src="http://lh4.ggpht.com/-M9XBs9uiO9E/TsEyQB4OAuI/AAAAAAAAAi8/dUALIUoyEvE/ChartQueryCapture_thumb.png?imgmax=800" width="574" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This query goes beyond simple SQL reporting to perform calculations on a subset of the data and format the results.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Database Reports&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We designed reports for the executive team using Altova StyleVision, based on the queries and charts we had already designed in DatabaseSpy. We simply copied our queries from the DatabaseSpy SQL Editor window and added them as sources in the StyleVision Design Overview window.&lt;/p&gt;  &lt;p&gt;Saving our report design in a StyleVision SPS stylesheet makes it is easy to regenerate an updated version every month. Here is the HTML output for a SemanticWorks Keyword Trends report based on the query above, displayed in the StyleVision Preview window:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-xa0MJV6MMQI/TsEyQgo8OiI/AAAAAAAAAjE/oBPXOuI1xmc/s1600-h/clip_image009%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://lh4.ggpht.com/-RTKWH0b7vpc/TsEyQ-I7ArI/AAAAAAAAAjM/B9rb3LxqwI0/clip_image009_thumb.png?imgmax=800" width="512" height="672" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you follow the conventional wisdom for building your own paid keyword campaigns, you will develop segmented campaigns with many small, highly specialized ad groups, and you may also find yourself overwhelmed by the data in Adwords reports.&lt;/p&gt;  &lt;p&gt;If you’d like to try managing your own keywords the way we describe here, a &lt;a href="http://www.altova.com/download-trial/"&gt;fully functional trial&lt;/a&gt; of the Altova MissionKit is available.&lt;/p&gt;  &lt;hr align="left" size="1" width="33%" /&gt;  &lt;p&gt;&lt;a name="_msocom_1"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-5772807914299593769?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/H2QagAXJH1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/5772807914299593769/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=5772807914299593769" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5772807914299593769?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/5772807914299593769?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/H2QagAXJH1U/mastering-paid-keywords.html" title="Mastering Paid Keywords" /><author><name>DaveMcG</name><uri>http://www.blogger.com/profile/08885768216396627489</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_REdrfeVqYdU/Se9fDv8FDpI/AAAAAAAAADY/eqOIwcE3V1k/S220/david.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-yMMFhKaKSUk/TsEyMl8Pz6I/AAAAAAAAAhs/VMs8ITL7enk/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2011/11/mastering-paid-keywords.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8EQ3g4eSp7ImA9WhRSE0g.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-8398280237225660872</id><published>2011-11-15T06:00:00.001-05:00</published><updated>2011-11-15T06:00:02.631-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-15T06:00:02.631-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="diff merge tool" /><category scheme="http://www.blogger.com/atom/ns#" term="WebDav" /><category scheme="http://www.blogger.com/atom/ns#" term="DiffDog" /><title>DiffDog Takes to the Cloud</title><content type="html">&lt;p&gt;Techy folks generally have a good diff tool they rely on to compare and sync files and directories. But what happens when, as more and more info is bound for the cloud, your data lives on servers accessed via URL? &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-1ZkAiXOU98s/TrhQBmOD2tI/AAAAAAAAAF0/tdOQv7EXqNs/s1600-h/clip_image001%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DiffDog" border="0" alt="DiffDog diff/merge tool " src="http://lh3.ggpht.com/-AiJWHg7HGnQ/TrhQB0Z7NQI/AAAAAAAAAF8/dYgcZ8CmO84/clip_image001_thumb.png?imgmax=800" width="610" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are myriad applications today that live on servers accessed via HTPP – but let’s take a look at a common example: SVN. Subversion (SVN) repositories include WebDAV as a commonly used server option. WebDAV is a natural protocol for SVN because its concern is hierarchy, structured metadata, and versions. Since WebDAV is an extension of HTTP it gives easy access to basic information about files and folders to any HTTP-aware client, including DiffDog – Altova’s &lt;a href="http://www.altova.com/diffdog/diff-merge-tool.html"&gt;diff/merge tool&lt;/a&gt; for files, directories, and databases. However, DiffDog knows a few tricks that set it apart from the other breeds. &lt;/p&gt; &lt;a name='more'&gt;&lt;/a&gt; &lt;h3&gt;Diff/Merge via WebDAV&lt;/h3&gt;  &lt;p&gt;SVN clients typically support command line differencing; however, a text-only representation of the changes in even one file can be hard to read and use. When you want to compare the trunk against a tagged version, the problem is magnified.&amp;#160; &lt;/p&gt;  &lt;p&gt;There are several visual differencing tools available that can help with analyzing version changes in SVN. They have varying degrees of compatibility with how SVN works. Some tools are well integrated with the SVN command line. DiffDog includes all the common comparison options for a tool that is tightly integrated with SVN clients.&amp;#160; Where it excels is its ability to talk to SVN servers.&amp;#160; &lt;/p&gt;  &lt;p&gt;Accessing an SVN repository with DiffDog using WebDAV is simple. The easiest starting point is to open &lt;a href="http://www.altova.com/diffdog/folder-diff-tool.html"&gt;Directory Comparison View&lt;/a&gt; and paste in the URLs of the folders you want to compare. In this case we’re comparing SVN branches on &lt;a href="http://www.projectlocker.com"&gt;Projectlocker.com&lt;/a&gt;. The two sets of files open, and DiffDog provides a color-coded, browsable view of the differences between the two directories. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Ge0j4aTC308/TrhQCLc2_6I/AAAAAAAAAGE/83u9GkBAy7s/s1600-h/clip_image002%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Compare Directories" border="0" alt="Directory Comparison in DiffDog" src="http://lh6.ggpht.com/--c3M5cZvEgw/TrhQCYPsYcI/AAAAAAAAAGM/bb5BZ3A83fk/clip_image002_thumb.png?imgmax=800" width="646" height="497" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Clicking on either one of a pair of files opens a detailed &lt;a href="http://www.altova.com/diffdog/file-diff-tool.html"&gt;file comparison&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-D2LVuv4Wgy8/TrhQCt0yJyI/AAAAAAAAAGU/Uj_iwdMl4r4/s1600-h/clip_image004%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Diff files" border="0" alt="File comparison in DiffDog" src="http://lh4.ggpht.com/-yF5isdva8e8/TrhQCt1ZrMI/AAAAAAAAAGc/LQtlUoN3x2E/clip_image004_thumb.jpg?imgmax=800" width="624" height="459" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;DiffDog's ability to distinguish between changes to XML and meaningful changes is key in this situation – most development trees have some amount of XML in them.&amp;#160; DiffDog also supports &lt;a href="http://www.altova.com/diffdog/word-document-comparison.html"&gt;comparing Word docs&lt;/a&gt; and &lt;a href="http://www.altova.com/diffdog/database-diff-tool.html"&gt;databases&lt;/a&gt; – so all bases are covered.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-1lz18an_uCM/TrhQC191NYI/AAAAAAAAAGk/2K3fkpH_2ac/s1600-h/clip_image005%25255B3%25255D.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="XML-aware diff" border="0" alt="XML-aware diff options" src="http://lh5.ggpht.com/-ItjswmWOioI/TrhQDTU36KI/AAAAAAAAAGs/HLLMxBIubRY/clip_image005_thumb.gif?imgmax=800" width="656" height="450" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Of course, folders you compare do not have to both be WebDAV SVN folders.&amp;#160; It is equally straightforward to compare the SVN server with a local directory.&lt;/p&gt;  &lt;p&gt;DiffDog’s ability to access servers via HTTP (or FTP) opens a world of possibilities: comparing a local directory with a Google Docs directory, or diffing a local Web server against files hosted on the &lt;a&gt;Amazon CloudFront&lt;/a&gt; , or even just synching photos between your local drive and your chosen back- up service.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you’d like to try DiffDog, it’s available for a &lt;a href="http://www.altova.com/download-trial/"&gt;30-day trial&lt;/a&gt; over on the Altova Web site. &lt;/p&gt;  &lt;p&gt;&lt;a name="_msocom_1"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-8398280237225660872?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/XGQ4rWb1NM4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/8398280237225660872/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=8398280237225660872" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/8398280237225660872?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/8398280237225660872?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/XGQ4rWb1NM4/diffdog-takes-to-cloud.html" title="DiffDog Takes to the Cloud" /><author><name>Erin Cavanaugh</name><uri>http://www.blogger.com/profile/05488702872055566047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_C4xYMtGRX-M/SYie9G7vVdI/AAAAAAAAABE/7MnFXMC-iy8/S220/Erin.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-AiJWHg7HGnQ/TrhQB0Z7NQI/AAAAAAAAAF8/dYgcZ8CmO84/s72-c/clip_image001_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2011/11/diffdog-takes-to-cloud.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEGRXY-fSp7ImA9WhRTGU8.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-8365657903129961630</id><published>2011-11-08T06:00:00.004-05:00</published><updated>2011-11-10T06:13:44.855-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-10T06:13:44.855-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XMLSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="API" /><category scheme="http://www.blogger.com/atom/ns#" term="Twitter" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="data integration" /><title>Digging deeper with the Twitter API: iPhone 4S vs. Galaxy Nexus</title><content type="html">&lt;p class="MsoNormal"&gt;We found some interesting data when we dug below the surface of the iPhone 4S vs. Galaxy Nexus debate using the Twitter Search API.&lt;span class="Apple-style-span" style="font-family: Calibri, sans-serif; "&gt;&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;In today’s world there is a vast quantity of data available online that can be used for research, market analysis, and competitive intelligence. While “&lt;a href="http://en.wikipedia.org/wiki/Big_data"&gt;Big Data&lt;/a&gt;” can be a problem for those who produce it, store it, and compile it, it is highly beneficial for those of us who are looking for answers.&lt;/p&gt;&lt;p&gt;Some of that data is fortunately available to be queried online, and, in particular, there is a vast quantity of data on social media interactions out there.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-8qNuzrNkmrA/TrgSSHXaZiI/AAAAAAAAAjo/yKOA1PpWct0/s1600-h/TweetsQueryingSearchAPI4.png"&gt;&lt;img style="display: inline" title="TweetsQueryingSearchAPI" alt="TweetsQueryingSearchAPI" src="http://lh3.ggpht.com/-Cab7QZbaVg4/TrgSS1AfiJI/AAAAAAAAAjw/Ockh69Y5Cgg/TweetsQueryingSearchAPI_thumb2.png?imgmax=800" width="564" height="209" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In this article we will explore how to use the &lt;a href="https://dev.twitter.com/docs/api/1/get/search"&gt;Twitter Search API&lt;/a&gt; from &lt;a title="Graphical data mapping, conversion, and integration tool" href="http://www.altova.com/mapforce.html"&gt;MapForce&lt;/a&gt;, &lt;a href="http://www.altova.com/"&gt;Altova&lt;/a&gt;’s data mapping/conversion/integration tool, to aggregate data on recent user submissions (“tweets”) on two highly popular topics – the Apple “iPhone 4S” vs. the “Galaxy Nexus” as the latest hot Android phone – and extract some statistical data about the users engaged in those discussions.&lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt;  &lt;p&gt;One of the benefits of this abundance of data available to us today is that we can query it in interesting ways and extract new meaning from it. While there are undoubtedly many existing services that already provide trends over Twitter topics (e.g., &lt;a href="http://trendistic.indextank.com/"&gt;Trendistic&lt;/a&gt;), those services only offer very simple trends and do not allow us to query any deeper.&lt;/p&gt;&lt;p&gt;But all of the underlying data is available for grabs if you are just willing to learn a tiny bit about web service APIs and how to use them to extract XML data for further processing. As a starting point, let's use the &lt;a href="https://dev.twitter.com/docs/api/1/get/search"&gt;Twitter Search API&lt;/a&gt; to query the stream of recent tweets for the last 100 postings that are about the “Galaxy Nexus”. The &lt;a href="https://dev.twitter.com/docs/using-search"&gt;Usage Guidelines for Twitter Search&lt;/a&gt; tell us that using both words in a query will result in the use of the default operator, which is AND, so we are going to search for posts that contain “Galaxy AND Nexus”. So let’s try that and request the most recent 100 items:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a title="http://search.twitter.com/search.atom?q=galaxy+nexus&amp;amp;rpp=100" href="http://search.twitter.com/search.atom?q=galaxy+nexus&amp;amp;rpp=100" target="_blank"&gt;http://search.twitter.com/search.atom?q=galaxy+nexus&amp;amp;rpp=100&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;If you follow this link, you will get a second window with a lot of raw XML data that is formatted according to the &lt;a href="http://tools.ietf.org/html/rfc4287" target="_blank"&gt;Atom Syndication Format specifications&lt;/a&gt;. Alternatively, you could request the data in JSON format, if you wanted to directly process it via JavaScript code by hand, but we will use the XML-based Atom format so that we can easily analyze the data and extract the information we want.&lt;/p&gt;&lt;p&gt;Viewing the above search result in a browser is not very user-friendly, so we can take a quick peek at the XML data in our &lt;a title="XMLSpy" href="http://www.altova.com/xml-editor/" target="_blank"&gt;favorite XML Editor&lt;/a&gt; using the Open from URL function:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-5JEh5K9QkQs/TrgSTOLGHVI/AAAAAAAAAj4/7HnKXnkUMq0/s1600-h/TweetsAtomGrid%25255B7%25255D.png"&gt;&lt;img style="display: inline" title="TweetsAtomGrid" alt="TweetsAtomGrid" src="http://lh6.ggpht.com/-j_x9YEef4Nk/TrgSTxoCftI/AAAAAAAAAkA/MfdgGZdg8kQ/TweetsAtomGrid_thumb%25255B5%25255D.png?imgmax=800" width="600" height="499" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As you can see, the data for each entry includes a language code, so for this example we will extract data from this Twitter feed as well as from a second search result on the “iPhone 4S” and combine them into one intermediate XML file for further analysis.&lt;/p&gt;&lt;p&gt;Extracting XML data is really easy in MapForce: using the “Insert XML File” option to drop in an XML source, we can again specify the same URL as before. If needed, MapForce will automatically create an XML Schema for the supplied data so we can visualize it and extract information from it:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-bzAvR6n32VQ/TrgSUiI-bzI/AAAAAAAAAkI/ma5mLdoy15k/s1600-h/TweetAtomMapping%25255B10%25255D.png"&gt;&lt;img style="display: inline" title="TweetAtomMapping" alt="TweetAtomMapping" src="http://lh6.ggpht.com/-6tRtunjeJ0Y/TrgSVGR1rLI/AAAAAAAAAkQ/bhHGOwhwRYA/TweetAtomMapping_thumb%25255B6%25255D.png?imgmax=800" width="593" height="585" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In our mapping we have dropped in two sources on the left side – one using a query string to search for “Galaxy Nexus” and the other to search for “iPhone 4S” – and on the right side we have dropped in a simple XML Schema that will allow us to aggregate our data and analyze it more conveniently going forward. In this case the mapping between the two sides is straight-forward as we are only extracting basic information about the user, the date, and the language of the tweet, but in other applications the mapping could be more complicated and include functions as well as queries to other data sources, databases, or web services…&lt;/p&gt;&lt;p&gt;Previewing the resulting XML data can be done directly inside MapForce using the output tab, and this is what we see as a result of our data transformation:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-YGWVjhMgmTU/TrgSV3kX6mI/AAAAAAAAAkY/RXuP_H0jqoA/s1600-h/TweetsRawData%25255B4%25255D.png"&gt;&lt;img style="display: inline" title="TweetsRawData" alt="TweetsRawData" src="http://lh4.ggpht.com/-BQ62-NjNL5Q/TrgSWVUyE5I/AAAAAAAAAkg/9oR4YXUNafc/TweetsRawData_thumb%25255B2%25255D.png?imgmax=800" width="356" height="302" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Now we can easily use the reporting capabilities of &lt;a title="Visual Stylesheet &amp;amp; Report Design Tool" href="http://www.altova.com/stylevision.html"&gt;StyleVision&lt;/a&gt; to group this data by language within each topic and count the number of posts in each language. We can then report this data in the form of pie charts, which produces the following interesting results:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-xxyo-qtikjg/TriSqmyxrCI/AAAAAAAAAlA/PVPZqtvAst0/s1600-h/TweetsByLanguage%25255B5%25255D.png"&gt;&lt;img style="display: inline" title="TweetsByLanguage" alt="TweetsByLanguage" src="http://lh6.ggpht.com/-CAyiEDCNE0A/TriSqgg_ZiI/AAAAAAAAAlI/Q-cLs4zPnOU/TweetsByLanguage_thumb%25255B2%25255D.png?imgmax=800" width="562" height="931" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Obviously, this data is highly dependent on the date of execution and time of day, as well as the particular announcements happening about these products, so the numbers will fluctuate quite a bit, but it can be used as a nice monitoring for seeing different language-specific trends. And once this has been set up, the report can be refreshed easily with the click of a button to get a snapshot at that point in time. For more long-term analysis it would of course be necessary to modify the mapping a bit to query more than 100 recent tweets.&lt;/p&gt;&lt;p&gt;In this article we have used Twitter’s Search API as one example data source and only looked at language as one unique data point, but there are many more interesting sources of data available online today, and this approach can be used on all of them in a similar fashion.&lt;/p&gt;&lt;p&gt;If you want to experiment with other data sources and other kinds of information that you want to extract, we invite you to try for yourself. A &lt;a href="http://www.altova.com/download-mapforce.html"&gt;free 30-day evaluation version of MapForce is available&lt;/a&gt;, and there are no limits on how you can use &lt;a href="http://www.altova.com/mapforce.html"&gt;the other features of Altova’s data mapping and conversion tool&lt;/a&gt; for data processing tasks that go beyond analyzing social media trends…&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-8365657903129961630?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/3_PLYNjYZFA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/8365657903129961630/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=8365657903129961630" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/8365657903129961630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/8365657903129961630?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/3_PLYNjYZFA/analyzing-social-media-data-beyond.html" title="Digging deeper with the Twitter API: iPhone 4S vs. Galaxy Nexus" /><author><name>XML Aficionado</name><uri>http://www.blogger.com/profile/01835657544617220110</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_KDgXmlITJmY/SWI3mdczieI/AAAAAAAAASs/neqRiX2_omQ/S220/Aficionado_cartoon.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-Cab7QZbaVg4/TrgSS1AfiJI/AAAAAAAAAjw/Ockh69Y5Cgg/s72-c/TweetsQueryingSearchAPI_thumb2.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2011/11/analyzing-social-media-data-beyond.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMERXk-eSp7ImA9WhRTE0w.&quot;"><id>tag:blogger.com,1999:blog-4710621816584132478.post-4037697680814899923</id><published>2011-11-03T06:00:00.003-04:00</published><updated>2011-11-03T06:00:04.751-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-03T06:00:04.751-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XMLSpy" /><category scheme="http://www.blogger.com/atom/ns#" term="XBRL" /><category scheme="http://www.blogger.com/atom/ns#" term="MapForce" /><category scheme="http://www.blogger.com/atom/ns#" term="MACPA" /><title>Case Study: Altova Customer Succeeds with XBRL</title><content type="html">&lt;p&gt;XBRL is mandated for most public companies. So why are private organizations and non-profits jumping on the bandwagon? This case study examines a real-world success story. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-JFtJmOgJfCU/TrGv0epzOhI/AAAAAAAAAEs/iGmi2zr19Ss/s1600-h/clip_image002%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" hspace="12" alt="clip_image002" src="http://lh6.ggpht.com/-vZR8RGKK7oU/TrGv0gDWeHI/AAAAAAAAAE0/nfqcstWLois/clip_image002_thumb%25255B2%25255D.jpg?imgmax=800" width="350" height="347" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We were really excited when the folks at MACPA told us about their success working with XBRL. They set out to discover if XBRL could be used successfully (without a huge upfront investment) by small businesses and NPOs and ended up confirming not only that, but realizing benefits to their internal financial processes, as well. &lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt;    &lt;h3&gt;Toward Ubiquitous XBRL&lt;/h3&gt;  &lt;p&gt;With close to 10,000 members, the Maryland Association of Certified Public Accountants (MACPA) is often looked to for their expertise on issues relevant to the field of accounting. The US Securities and Exchange Commission’s (SEC) mandate that public companies submit financial data in XBRL is one of those issues.&lt;/p&gt;  &lt;p&gt;Despite the potential of XBRL for reducing costs and increasing efficiency, many organizations are concerned about the time and expense that will be required to convert all of their financial data into XBRL, a process that can be further complicated when financial data is housed in multiple systems. &lt;/p&gt;  &lt;p&gt;MACPA set out to prove that these obstacles are easily surmountable: with the right tools, it’s possible to bring XBRL transformation in-house to not only comply with mandates, but realize greater efficiencies and transparency in various scenarios. In the process they discovered that tagging data in XBRL is valuable to private entities and non-profits as well as public companies facing a mandate. &lt;/p&gt;  &lt;p&gt;They took advantage of widely available &lt;a href="http://www.altova.com/solutions/xbrl-tools.html"&gt;XBRL software tools&lt;/a&gt; including the Altova MissionKit, which interfaces with multiple relational databases for XBRL mapping, tagging, and reporting.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-e-r2M8OzK-8/TrGv0z9tzRI/AAAAAAAAAE8/fj1nJ2XuRv4/s1600-h/clip_image003%25255B5%25255D.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image003" border="0" hspace="12" alt="clip_image003" src="http://lh4.ggpht.com/-Jthg-peQ8tA/TrGv063X_ZI/AAAAAAAAAFE/FzMtZRl3UtY/clip_image003_thumb%25255B2%25255D.gif?imgmax=800" width="600" height="456" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In the end, &lt;a href="http://www.altova.com/cust_macpa.html"&gt;the project&lt;/a&gt; turned MACPA’s financial data into a force for driving efficiencies and accountability. Once their internal accounting data was mapped to XBRL, they were able to automate burdensome data collection, transformation, and analysis tasks to gain more insight into their financial data. &lt;/p&gt;  &lt;p&gt;For instance, MACPA used their XBRL data to populate their financial Key Performance Indicator (KPI) system, significantly reducing the amount of time and effort required to prepare the KPI documentation. This in turn enables them to run the system at more frequent intervals. They are also now able to automate previously onerous tax filing tasks by mapping the association's financial data in XBRL to the 990 tax return. (With almost 1.5 million exempt organizations in the US filing hundreds of thousands of Form 990s each year, the efficiency gained by using XBRL could be significant.)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“Ubiquitous XBRL could do for accounting/taxation what barcodes did for retail.” - Skip Falatko, MACPA Director of Finance and Administration &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This project not only enabled MACPA to learn about XBRL and advise their members, but also to automate and enhance the way they dealt with their own financial data. And utilizing affordable tools like the Altova MissionKit confirmed that handling XBRL in-house is the way to go. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt; “Why outsource tagging [your data in XBRL]? If you tag it in house, then you own the data and can use it in myriad different ways as a productivity tool.” - Tom Hood, MACPA CEO and Executive Director &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Check out the complete &lt;a href="http://www.altova.com/cust_macpa.html"&gt;case study&lt;/a&gt; to learn how MACPA brought XBRL transformation in-house to effect changes in efficiency and transparency. If you’re an accounting or technical professional who needs to learn more about XBRL, Altova offers free, self-paced &lt;a href="http://www.altova.com/aot/online-training.aspx"&gt;online training&lt;/a&gt; and an educational &lt;a href="http://www.altova.com/whitepapers/XBRL_Whitepaper.pdf"&gt;XBRL whitepaper&lt;/a&gt;. &lt;/p&gt;  &lt;hr align="left" size="1" width="33%" /&gt;  &lt;p&gt;&lt;a name="_msocom_1"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4710621816584132478-4037697680814899923?l=blog.altova.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Altova/~4/eY9eulq1qgQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.altova.com/feeds/4037697680814899923/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4710621816584132478&amp;postID=4037697680814899923" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/4037697680814899923?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4710621816584132478/posts/default/4037697680814899923?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Altova/~3/eY9eulq1qgQ/case-study-altova-customer-succeeds.html" title="Case Study: Altova Customer Succeeds with XBRL" /><author><name>Erin Cavanaugh</name><uri>http://www.blogger.com/profile/05488702872055566047</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://2.bp.blogspot.com/_C4xYMtGRX-M/SYie9G7vVdI/AAAAAAAAABE/7MnFXMC-iy8/S220/Erin.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-vZR8RGKK7oU/TrGv0gDWeHI/AAAAAAAAAE0/nfqcstWLois/s72-c/clip_image002_thumb%25255B2%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://blog.altova.com/2011/11/case-study-altova-customer-succeeds.html</feedburner:origLink></entry></feed>

