topical media & game development
professional-xml-23-ExpenseReport-expenseReport.xml / xml
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:exp="http://example.com/expenseReport">
<head>
<xf:model schema="file:C:/Documents%20and%20Settings/Kent/My%20Documents/My%20Writing/Books/ProXML/24-XForms/codeWork/ExpenseReport/expenseReport.xsd">
<xf:instance src="file:C:/Documents%20and%20Settings/Kent/My%20Documents/My%20Writing/Books/ProXML/24-XForms/codeWork/ExpenseReport/baseReport.xml" />
<xf:submission id="saveXML" method="put"
action="file:C:/temp/output.xml"
includenamespaceprefixes="exp" />
<xf:bind nodeset="exp:summary/exp:travelSummary"
type="xs:decimal"
calculate="sum(//exp:expenseItem/exp:amount[../exp:type='Travel'])" />
<xf:bind nodeset="exp:summary/exp:entSummary"
type="xs:decimal"
calculate="sum(//exp:expenseItem/exp:amount[../exp:type='Entertainment'])" />
<xf:bind nodeset="exp:summary/exp:mealSummary"
type="xs:decimal"
calculate="sum(//exp:expenseItem/exp:amount[../exp:type='Meal'])" />
<xf:bind nodeset="exp:summary/exp:miscSummary"
type="xs:decimal"
calculate="sum(//exp:expenseItem/exp:amount[../exp:type='Miscellaneous'])" />
<xf:instance id="departments">
<departments xmlns=""
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<department id="dev">
<name>Development</name>
</department>
<department id="sal">
<name>Sales</name>
</department>
</departments>
</xf:instance>
<xf:instance id="expenseTypes">
<expenseType xmlns="">
<option value="Travel" />
<option value="Entertainment" />
<option value="Meal" />
<option value="Miscellaneous" />
</expenseType>
</xf:instance>
</xf:model>
<link href="sample.css" type="text/css" rel="stylesheet">
</link>
</head>
<body>
<div id="wrapper">
<div id="header">Expense Report</div>
<div id="content">
<xf:group ref="exp:employee">
<xf:input ref="exp:name">
<xf:label>Employee:</xf:label>
</xf:input>
<xf:input ref="exp:employeeID">
<xf:label>Employee ID:</xf:label>
</xf:input>
<xf:select1 ref="exp:dept">
<xf:label>Dept:</xf:label>
<xf:itemset nodeset="instance('departments')/department">
<xf:label ref="name" />
<xf:value ref="@id" />
</xf:itemset>
</xf:select1>
</xf:group>
<xf:group>
<xf:input ref="exp:date">
<xf:label>Date:</xf:label>
</xf:input>
<br />
<xf:input ref="exp:purpose">
<xf:label>Purpose:</xf:label>
</xf:input>
<br />
<xf:group>
<xf:input ref="exp:startDate">
<xf:label>Start Date:</xf:label>
</xf:input>
<xf:input ref="exp:endDate">
<xf:label>End Date:</xf:label>
</xf:input>
</xf:group>
</xf:group>
</div>
<hr />
<xf:repeat id="lineitems" nodeset="exp:expenseItem">
<xf:input ref="exp:date" />
<xf:input ref="exp:amount" />
<xf:select1 ref="exp:type">
<xf:itemset nodeset="instance('expenseTypes')/option">
<xf:label ref="@value" />
<xf:value ref="@value" />
</xf:itemset>
</xf:select1>
<xf:input ref="exp:description" />
</xf:repeat>
<hr />
<xf:trigger>
<xf:label>Insert item</xf:label>
<xf:action ev:event="DOMActivate">
<xf:insert position="after" nodeset="exp:expenseItem"
at="index('lineitems')" />
</xf:action>
</xf:trigger>
<div id="summary">
<xf:group ref="exp:summary">
<xf:label>
<h3>Category Summaries</h3>
</xf:label>
<xf:output ref="exp:travelSummary">
<xf:label>Travel:</xf:label>
</xf:output>
<br />
<xf:output ref="exp:entSummary">
<xf:label>Entertainment:</xf:label>
</xf:output>
<br />
<xf:output ref="exp:mealSummary">
<xf:label>Meal:</xf:label>
</xf:output>
<br />
<xf:output ref="exp:miscSummary">
<xf:label>Miscellaneous:</xf:label>
</xf:output>
<br />
</xf:group>
</div>
<div id="footer">
<xf:submit submission="saveXML">
<xf:label>Save</xf:label>
</xf:submit>
</div>
</div>
</body>
</html>
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.