W3C home > Mailing lists > Public > www-forms@w3.org > May 2011

XForms' transform function

From: Philip Fennell <Philip.Fennell@marklogic.com>
Date: Tue, 10 May 2011 22:07:07 -0700
To: "www-forms@w3.org" <www-forms@w3.org>
Message-ID: <D20C296D14127D4EBD176AD949D8A75A67743A9A@EXCHG-BE.marklogic.com>
Resending - I think the previous version of this e-mail has got stuck in the pipes because I put the xform as an attachment.

I have been experimenting with demonstrating Schematron validation within XForms by the use of the proposed transform function. I have been using XSLTForms beta3 and have a rather limited example which uses the textual result from the XSLT 1.0 skeleton implementation. Seeing as XSLTForms' transform function returns a string serialization of the result of the transform I cannot use the SVRL representation of a Schematron report which would, if available as an XML tree, provide more options for presentation and logic/behavior than the basic text report. However, it does prove that it can work all be it that the 'complied' schema can only be accessed via a URI.

I am still looking for an implementation that'll firstly let me store the compiled schema in an XForms instance and ultimately allow me to daisy-chain the compilation transforms, across an number of instances, so that I can create a Schematron rules editor in XForms and have the schema compiled and applied to a test source document upon DOMSubtreeModified events dispatched from the schema instance. The nearest option I can currently see working is to use Orbeon's xxforms:call-xpl() function and implement the Schematron compilation pipeline externally to XForms but that's not what I'm after.

I have included below the fledgling form so that you can see the string of instances I'll in order to compile the schema. It's all rather a hack at the moment but I'm planning on making it look a bit more presentable.


Philip Fennell
MarkLogic Corporation

One Kingdom Street
Paddington Central
London W2 6BD
United Kingdom

Mobile: +44 (0) 7824 830 866 
Tel:    +44 (0) 203 402 3619

email  Philip.Fennell@marklogic.com
web    www.marklogic.com

<?oxygen NVDLSchema="../../schemas/nvdl/xhtml-xforms11.nvdl"?>
<?xml-stylesheet href="/resources/xsltforms/xsltforms.xsl" type="text/xsl"?>
<html 	xmlns="http://www.w3.org/1999/xhtml" 
		<title>XForms + Schematron</title>
		<meta http-equiv="content-language" content="en" />
		<meta http-equiv="cache-control" content="no-cache" />
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<!--<link href="/resources/css/xforms.css" media="all" rel="stylesheet"/>-->

		<xf:model id="content">
			<xf:instance id="source">
				<atom:feed xmlns:atom="http://www.w3.org/2005/Atom">
					<atom:title>Test Feed</atom:title>
			<xf:bind id="feedTitle" nodeset="atom:title"/>
			<xf:bind id="feedId" nodeset="atom:id"></xf:bind>
			<xf:bind id="feedUpdated" nodeset="atom:updated"/>
		<xf:model id="rules">
			<xf:instance id="schema">
				<iso:schema xmlns:iso="http://purl.oclc.org/dsdl/schematron">
					<iso:ns prefix="atom" uri="http://www.w3.org/2005/Atom"/>
					<iso:title>Simple Atom Feed Rules</iso:title>
						<iso:title>Atom Feed Root</iso:title>
						<iso:rule context="/">
							<iso:assert test="atom:feed">The document root must be an atom:feed element.</iso:assert>
						<iso:title>Required elements of an Atom Feed</iso:title>
						<iso:rule context="/atom:feed">
							<iso:assert test="atom:title">atom:title is missing, this is a required element.</iso:assert>
							<iso:assert test="atom:id">atom:id is missing, this is a required element.</iso:assert>
							<iso:assert test="atom:updated">atom:updated is missing, this is a required element.</iso:assert>
			<xf:instance id="dsdlInclude">
				<iso:schema xmlns:iso="http://purl.oclc.org/dsdl/schematron"/>
			<xf:instance id="abstractExpand">
				<iso:schema xmlns:iso="http://purl.oclc.org/dsdl/schematron"/>
			<xf:instance id="compiledSchema">
				<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
			<xf:instance id="svrlReport">
				<svrl:schematron-output xmlns:svrl="http://purl.oclc.org/dsdl/svrl"> </svrl:schematron-output>
		<div id="view">
				<xf:output value="name(instance('source'))">
					<xf:label>Document Root</xf:label>
				<xf:output bind="feedTitle">
				<xf:output bind="feedId">
				<xf:output bind="feedUpdated">
		<div id="results">
					<xf:output ref="instance('svrlReport')"/>
					<xf:label>Validate Rules</xf:label>
					<xf:action ev:event="DOMActivate">
						<!--<xf:insert origin="transform(instance('source'), '/resources/schemas/schematron/atom-feed.xsl')" position="after" nodeset="." context="instance('svrlReport')"/>-->
						<xf:setvalue ref="instance('svrlReport')" 
								transform(instance('source'), '/resources/schemas/schematron/vanilla-atom-feed.xsl'), 
									'&lt;/'), '&gt;')"/>
Received on Wednesday, 11 May 2011 05:07:33 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:36:24 UTC