Walbury’s Blog

December 25, 2019

Possible answer to global warming

Filed under: Uncategorized — walbury @ 2:26 pm

Disclaimer: some initial thoughts on a specific discovery. Too important not to publish – but I still think there must be something wrong with my logic somewhere. Then again, maybe not!

I recently stumbled across something, the ramifications of which were so profound that I had to pause for a moment and question my own sanity.
Ok, some of its ramifications were noticed, indeed to the extent that the discoverer won
both the 2018 Wolf Prize in chemistry and the Frontiers of Knowledge Award in Basic Sciences 2018
(BBVA (Banco Bilbao Vizcaya Argentaria, S.A) Foundation – Spain) and shared the Sixth Nano Research Award.

However it’s not clear if these awards were won for the single discovery that I find mind-blowingly, gob-smackingly incredible, or for his work in opening up this new field in general; and really, it matters not, history will decide.
The discovery I refer to is a compound called MOF-303, and the discoverer is a chemist by the name of Omar Yaghi, currently Professor of Chemistry, UC Berkeley.

I predict that it will become in a short space of time (3-5 years) more important than petroleum.

Whoa! Now I know you’ve just left the web page!
Yes, you read correctly. And now in a few short sentences I will explain to you why.

MOF-303 is one of a group of newly created chemical compounds called metal organic framework compounds that scientists have been talking up recently, some with
merit some perhaps not, mainly in the realm of either hydrogen or CO2 capture, but this one specifically is a quite cheaply producible compound that has one particular feature; it loves water (technically it is hydrophilic, as opposed to hydrophobic).
It also has a surface area that is hard to believe (one gram has the surface area of a soccer pitch – what does this even mean?!) – anyways the upshot of this is that at normal conditions (ie > 20% humidity, less than 42 degrees Celsius) it will just keep absorbing water – a lot of water – until it is super-saturated.

However when it hits 42 degrees C. the nature of the compound is such that the bonds between the water molecules and itself are
shaken sufficiently so as to be broken resulting in the stored water being released as water vapour. Clearly if this happens in the open air then nothing much is gained – however when this is made to happen in a container the result is profound; super-saturated air is created and water condenses out.
Ok, so this is nothing new, we’ve all seen water condense on the outside of a cold bottle.
No, not this, this is actually something totally new.

There is now a means whereby on demand and without expending any additional energy we are able to get liquid water from water vapour.
We now have a means whereby we can essentially make it rain on demand, wherever and whenever we like. Ok, so not much, maybe the equivalent of 1 ml, roughly equivalent to a very light shower, but even so the implications and likely repercussions of this will be vast.
Before this discovery it has always been necessary to lower the temperature to enable this condensation to occur.
Lowering the temperature of anything requires the expenditure of energy, indeed a substantial amount of energy. This compound does not – ambient temperature is sufficient.

Ok, so what is it and how much does it cost?

It is a compound synthesised out of aluminum chloride and a fairly basic organic acid, 3,5-pyrazoledicarboxylic acid using a process repeatable
in most high-school laboratories. The most expensive part would have to be the aluminum, which is currently trading at about $3 US a kg.
If the synthesis was to be scaled up it would surely be able to be mass-produced at a maximum of $10 a kg, almost certainly far less, maybe even as low as $5 a kg.
For the sake of argument let’s use $10 per kg, as it also needs additional infrastructure items (ie perspex container, tubing etc etc), and see how the numbers stack up.

This particular compound has the additional property that not only does it release the water when it hits this temperature but it also does so quite quickly (within an hour), meaning that theoretically
many more than one cycle per say could be achieved. Again for the sake of argument let’s just assume one cycle per day.

So to summarise what we know so far:
We have a compound that costs $10 per kg to make/deploy.
It yields 1 litre of water per kilogram per cycle, at temperatures from 10-40C, at 30% humidity and upwards.
It does not need heaps of space as its only requirement is circulating air.

Ok, doesn’t sound great. However this $10 is the only cost. For all intents and purposes it does not degrade. At all!

Let’s compare it against some real world costings.
Currently a lot of Australia is reliant upon trucking water in – random link; https://www.clarktanks.com.au/2018/04/26/carting-in-stock-water-for-drought-preparation/

For example, the cost of carted water in NSW is about $13.50 per kilolitre (based on an 11,500 litre load costing $155).
= 1.35 cents per litre.

So what we want to work out is how long would it take before MOF-303 is the same price, i.e. how many years before it’s paid for itself at this price?

MOF-303 100 days => $10 for 100 lt., or 10 cents per litre.

So 10 / 1.35 * 100 = 741 days. A little over 2 years. Straight away this is starting to look do-able. So in not much over 2 years we have free water! Definitely viable. If it was available every council in NSW would be ordering some.

Let’s compare it against std. agricultural prices. The current price of water in the Murray Darling is ~ $500 per megalitre.
.05 cents / 1t. so 20 litres for 1 cent.

But a lot of the prices in https://www.agriculture.gov.au/sites/default/files/sitecollectiondocuments/water/market-prices-sum-jun-2019.pdf are up over $5000 per M/L. which => 2 litres for 1 cent.

Using the $10 per kg price this implies 2000 days before it pays for itself. Not even 6 years. This is still viable.

On a side note:
In Nov. 2018 the Water Abundance XPRIZE, financed by the Tata Group and Australian Aid (ie you and me) awarded the major prize (US $1.5 million) to Skysource / Skywater Alliance, based in Venice Beach, California for developing an
easily deployable high-volume water generator that can be used in any climate, meeting the competition parameters of extracting a minimum of 2,000 liters of water per day from the atmosphere using 100 percent renewable energy,
at a cost of no more than two cents per liter.
This is using the old cool down the water method so I am extremely sceptical as to how this figure was arrived at and what time-frame was used to balance the books.
However again I could be wrong, maybe it genuinely is a competitor. The “Get in touch” instead of a price on all their products on the their website (https://www.skywater.com/products) is a little concerning.

Back to MOF-303.

However there is one other extremely compelling consequence of this compound’s ability.

In all the papers I have so far read I have yet to see even one mention of what I regard to be one of the most important aspects of MOF-303.

It gives us the ability to make it rain on demand, and where on demand. Where. WHERE. There is nothing to stop us making water in the Great Dividing Range.
Water plus height = hydro.
The costings for Snowy hydro 2.0 suddenly changed massively!

So who is making it?

The idea is to commercialise it – fair enough – and this is being done by a company in Scottsdale Arizona called ZeroMassWater;
https://www.zeromasswater.com/rexi/source/.

This technology is currently being trialed by ARENA (Australian Renewable Energy Agency) – see https://arena.gov.au/news/harnessing-clean-drinking-water-using-solar-power/.
However the trials main reason for existence is to provide drinking water for outback communities and lessen the need for plastic bottles (!!)
So it has a markedly different focus and price structure.
The current budget is $821,500 for the total project with $420,000 in funding for the actual units, 150 in total.
All the units appear to be dual, so 20kg.
So $420,000 / 150 / 20 = $140 per kg price.

However this is a first bespoke effort and additionally is a rolled gold solution – it has an additional solar panel to chill the water and additionally adds essential minerals to make it fit for drinking (distilled water being poisonous)

So even at this early stage prior to any mass production the price point would appear to be around $50 per kg if one is just to take into account the MOF-303 and substrate.

So what are the negatives – if we have units extracting water from the air everywhere could we dry out the air?

The above company has this in their FAQ page;
Will a large number of Hydropanels (the bespoke rolled-gold solution the company is spruiking) dry out the environment?
“No! In fact, our scientists have calculated it would take at least 70,000 Hydropanels per person on earth to begin to make an impact.”
A simple thought experiment bears this out. Any unit will only come into contact with a minuscule amount of the total amount of air, as air extends from ground level at least 10 miles up into the sky. As Omar Yaghi has observed; at any point in time the atmosphere has – find this stat!
This link (https://www.sciencemag.org/news/2017/04/new-solar-powered-device-can-pull-water-straight-desert-air) has: “There are an estimated 13 trillion liters of water floating in the atmosphere at any one time, equivalent to 10% of all of the freshwater in our planet’s lakes and rivers.” I remember Omar Yaghi as stating it was substantially more. No matter!
The other salient fact; any slightly dried-out air will quickly “re-hydrate” as soon as it crosses an ocean/large body of water – this is an for all intents and purposes a boundless resource, it is 100% re-cyclable.

42 degrees kind of sounds like a lot – what if it’s only ever 25 degrees max? Ever been in a locked car on a warmish day? Same principle. Can be achieved easily! Black paint, enclosed area etc.

So how many do we need?
Millions, tens of millions. Not the rolled gold solution – just a basic give me some water so I can fill my dam and feed my stock, and get some crops to make it through and maybe even water the Daintree enough so it doesn’t catch fire.

Hm. Tens of millions, even hundreds of millions. Is this a ridiculous number? No. Every house in every town throughout rural Australia would love one, if not 2 or 3.
If it’s $10 per kg, and it will give you 1lt. per kg a day I’m sure many people would opt for $200’s worth.
That’s a one-off payment of $200 to get 20 lt. of water per day.
There’s almost 20 million cars in Australia, each one costing far more than these units. What matters more to life?

Farmers would dearly love to stop having to watch their livestock die of thirst – how much to fill a dam?
10, 100, 1000 units? (I’m using unit to = 1 x 10kg MOF-303 condensing unit) I’m guessing even 20 would make a big difference.
In the kingdom of the blind the one-eyed man is king.
If you have NO water then even some changes things massively..

Make no mistake, we are in a war situation – the recent Australia-wide fires should be enough evidence of that.

Maybe we need to change our mindset and be on a war-footing, in which case a large quantity of MOF-303 would be something that would be a priority to secure. Let’s see if our current government is up to the challenge!

Personally I’ve always been of the opinion that government incompetence is essentially an opportunity for citizens to thrive;
this may indeed be the ultimate expression of this. Twiggy? Gina? Potential tens of millions to be made doing the right thing by default.

Additionally given that this has now been discovered, is there perhaps a legal issue? Up until now there was no easy way of tackling climate change, all proposals have required some modification of existing behaviour. This is a fundamental shift – it is instead the adding of new behaviours that will see an immediate return. In the case of Australia ZeroMassWater’s principal selling point of providing potable water is not the pre-eminent benefit. I would regard the possibility of tackling the drought and even re-greening Australia and reversing some of the colossal environmental damage that has occurred over the last 100 plus years as being far more compelling.
It is a well known fact that vegetation can modify climate. I would argue this is what we need to aim for.
The Australian government has known of this discovery since 2018 which is when the ARENA trial began (impressive as this was very shortly after MOF-303 was discovered!). Given the time-scale there is probably no legal case that can be made against the Australian government for property and stock losses during this fire season caused by inaction when action was possible. However I would suggest that next fire season it could be a very different case.

For those concerned about the environment; I can’t see any direction that the aluminum price is going to go except up. The more that is controlled by persons wanting it allocated (??) to MOF-303 production the better.
Greenies – buy some Al stocks! And no I don’t work for Comalco..

So what is the legal status of this compound? Does some sort of royalty have to be paid every time it is made? Given that this compound is literally the decider between life
and death this is an interesting point. Additionally given China’s track record with regard to royalty payments and patent infringements, and the billions it has recently spent on fighting desertification,
I would suspect the only reason it is not yet being mass-produced in China is that the relevant minister has not yet been made aware of it!
This must surely be not far away.

MOFWORX is a commercialization effort within CSIRO to develop investment-ready technologies based in Clayton, Melbourne. Interestingly there is no information in what MOF compounds they are trying to mass produce. Could MOF-303 be one? And if not why not?

I predict that as soon as commercial quantities of this compound are made available there will be an explosion in experimentation, with thousands of backyard inventors
trying new combinations and methods of condensing water out. Given the phenomenal internal surface area available for water of this compound the theoretical limit is far
more than 1 liter per kg. What is the theoretical maximum? It would be good to know.

A couple of ideas just off the cuff;
Edward Linacre’s air-drop (which in 2011 won the Dyson Award but conspicuously disappeared – https://www.theguardian.com/technology/2011/nov/20/edward-linacre-airdrop-bright-idea) had the idea of using copper wool to further increase surface area, and also wind-driven fans to increase circulation. Relevant?

Once the water has been released into the air, bubble this saturated air though an existing water reservoir instead of trying to condense it. This would work with existing hydroponic setups e.g. those in SA; https://www.theaustralian.com.au/weekend-australian-magazine/this-is-the-future-of-farming/news-story/99fd0a207d8b6aa0768c32fd61b3d00e

Within 10 years I anticipate there will be millions of these condensing units. They will come in all shapes and sizes, with an explosion of inventiveness that will mirror the early car industry, or indeed more relevantly the early solar panel industry.

Unfortunately, I’m not sure we have 10 years..

#NeedItNow_MOF303.

misc notes;

Note there is never any such thing as a dearth of water (with the single exception of Antarctica where it is literally frozen out) – it is just a drought of water in a usable form. This discovery single-handedly reverses this.
Cloud-seeding – gone (not that Australia ever did much – I never could work out why)
Praying for rain – gone.
State fights over water allocations – gone.

August 4, 2018

How does one render xml in wordpress?

Filed under: Programming — walbury @ 3:01 am

I just can’t seem to get it to work; I just want to be able to do
a data element and 2 child elements and have them formatted say how IE does it automatically and embedded in a post – I think Stack Overflow does it too.

How about using the “code” option in html?

 

Invisible. Great. No not invisible DELETED. Hmm.

Do we have to replace chr(60) with < etc. and then use code?

<data>
<elemA att1="1" att2="2"/>
<elemB attA="a" attB="b"/>
</data>

Barely adequate. Maybe I need to get a plugin..

One post recommends using pre.
Ok, let’s see;

<data>
    <elemA att1="1" att2="2"/>
    <elemB attA="a" attB="b"/>
</data>

Better, far better. Ok this will have to do.

November 3, 2014

USI error with keystore

Filed under: Uncategorized — Tags: , — walbury @ 5:49 am

I thought I’d write a really quick post because again, I’ve got an error that has zero hits in google. I’ve been working on wrapping a web page around a web service call to the http://www.business.gov.au and when I deploy to IIS I get “Error:Unknown KeyStore exception [4699].” The USI stands for Unique Student Identifier and is a new government initiative requiring all students (tertiary or otherwise) to have a unique identifier. The common feature is I guess whether or not there is any government funding relevant to the course, not specifically whether a person is a student or not.
Anyways the answer seems to be that the keystore.xml file needs to have the read-only attribute removed. Additionally the IUSR user needs to have sufficient rights so as to be able to write to the file. I’m not really getting why this file needs to be modified as, as far as I am aware it contains the private key proving that the company is who it says it is.
For more information on this overall project see the links below;

http://usi.gov.au/system-dev-info/Pages/system-development-information.aspx

Below is a taste of what it contains;

Information for developers of web services integrating with the USI Registry System
Training organisations required to report under the Total VET Reporting Initiative and using a Student Management System (SMS) will need to ensure their system is enabled to comply with:
The Australian Vocational Education and Training Management Information Statistical Standards (AVETMISS) 7.0, which includes the USI data field
The Student Identifiers Act 2014. Under the SI Act, training organisations are required to record a USI number in the training records for their students and verify against the USI Registry System that the USI they have recorded for a student is the correct USI for that student.

June 4, 2009

The {base type definition} must have an {attribute wildcard}…

Filed under: Programming, Xml Schema — walbury @ 9:11 pm

Yep, that’s what I thought. Ok, a couple of reasons for posting this. One, when I do a search on this I get NO hits, zilch, nada. Am I really the first person in the world to get this error??? It’s an internally coded error message returned from the DotNet2 validation engine. So here’s the message in full:
The {base type definition} must have an {attribute wildcard} and the {target namespace} of the R’s {attribute declaration} must be valid with respect to that wildcard. WTF?!
So as a side-benefit I should now be able to determine if these pages are being crawled by google…
The error resulted from playing around with xsi:type (for the record I’m on Norman Walsh’s opinion; it sucks) but hey, it exists so deal with it I guess.
Ok, let’s see how well wordpress handles code.
Here’s the main xsd testDerived.xsd:

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:include schemaLocation="testDerived_Inc.xsd"/>
	<xs:element name="data" type="POCD_MT000040.InfrastructureRoot.typeId">
		<xs:annotation>
			<xs:documentation>Derivation test</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId">
		<xs:complexContent>
			<xs:restriction base="baseType">
				<xs:sequence>
					<xs:element ref="elemA" minOccurs="0" maxOccurs="3"/>
				</xs:sequence>
				<xs:attribute name="root" type="xs:string" use="required" fixed="2.16.840.1.113883.1.3"/>
				<xs:attribute name="extension" type="xs:string" use="required"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="baseType">
		<xs:sequence>
			<xs:element ref="elemA" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="root" type="xs:string"/>
		<xs:attribute name="extension" type="xs:string"/>
	</xs:complexType>
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST_P">
		<xs:complexContent>
			<xs:restriction base="POCD_MT000040.InfrastructureRoot.typeId">
				<xs:sequence>
					<xs:element ref="elemA" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="displayable" use="prohibited"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST">
		<xs:complexContent>
			<xs:extension base="POCD_MT000040.InfrastructureRoot.typeId">
				<xs:attribute name="newOne" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST_2">
		<xs:complexContent>
			<xs:restriction base="POCD_MT000040.InfrastructureRoot.typeId_TEST">
				<xs:sequence>
					<xs:element ref="elemA" minOccurs="0" maxOccurs="2"/>
				</xs:sequence>
				<xs:attribute name="newOne" type="xs:string" use="required"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST_3">
		<xs:complexContent>
			<xs:extension base="POCD_MT000040.InfrastructureRoot.typeId_TEST_2">
				<xs:attribute name="newTwo" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST_4">
		<xs:complexContent>
			<xs:restriction base="POCD_MT000040.InfrastructureRoot.typeId_TEST_3">
				<xs:sequence>
					<xs:element ref="elemA" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="newTwo" type="xs:string" use="required"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>

And here’s the include testDerived_Inc.xsd:

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="elemA" type="xs:string"/>
</xs:schema>

And here’s the instance:

<?xml version="1.0" encoding="UTF-8"?><data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Inetpub\wwwroot\XmlEdit\SamplesFinal\HL7\testDerived.xsd" root="2.16.840.1.113883.1.3" extension="???" xsi:type="POCD_MT000040.InfrastructureRoot.typeId_TEST_4" newOne="1" newTwo="2">
	<elemA>blah</elemA>
</data>

Note this instance validates fine in XmlSpy 2005 – yes, I know; not entirely trustworthy.
Stop press – I get the same error in Liquid Xml 2009 (community edition) – I guess XmlSpy is incorrect.
Interesting though – the error text is exactly the same; does this mean Liquid Xml is using the DotNet validator, or even written in DotNet?!!
Surely someone else in the world has had this error…

For those of you familiar with HL7 – you have my commiserations :), yes my starting point was one of CDA’s complex types.

Thought I’d do some more investigation – Liquid Xml gives an error on the line

<xs:attribute name="displayable" use="prohibited"/>

so I’ve removed it and the schemas validate ok (or seems to – still has an error listed?)
Next step; choose create xml instance and it auto-generates an instance as per below:

<?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid XML Studio - FREE Community Edition 7.1.1.1206 (http://www.liquid-technologies.com) -->
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Inetpub\wwwroot\XmlEdit\SamplesFinal\HL7\testDerived.xsd" 
   xsi:type="POCD_MT000040.InfrastructureRoot.typeId_TEST_P" root="2.16.840.1.113883.1.3" extension="string">
   <elemA>string</elemA>
</data>

Alas, still invalid… So I guess I can’t trust Liquid Xml either!! 😦
Also unsure why it has decided to use the type POCD_MT000040.InfrastructureRoot.typeId_TEST_P; maybe because it was the first derived one encountered?
Swapped POCD_MT000040.InfrastructureRoot.typeId_TEST_P with POCD_MT000040.InfrastructureRoot.typeId_TEST and instance below now includes the last type!

<?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid XML Studio - FREE Community Edition 7.1.1.1206 (http://www.liquid-technologies.com) -->
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Inetpub\wwwroot\XmlEdit\SamplesFinal\HL7\testDerived.xsd" 
xsi:type="POCD_MT000040.InfrastructureRoot.typeId_TEST_4" newTwo="string" newOne="string" root="2.16.840.1.113883.1.3" extension="string">
  <elemA>string</elemA>
</data>

Unsure what it’s doing here. Still invalid though.
Schema is still giving a error (although nothing underlined and still generates an instance – shouldn’t generate xml if xsd is screwed?)
Nothing for it; strip it down and add each bit one at a time.
Summary – added each derivation singly and is now OK! NOTHING HAS CHANGED – maybe a caching issue with LiquidXml??
This appears to be the case as the removal of the “prohibited” line is literally the only difference…

Auto-generated a valid xml instance as per below:

<?xml version="1.0" encoding="utf-8"?>
<!-- Created with Liquid XML Studio - FREE Community Edition 7.1.1.1206 (http://www.liquid-technologies.com) -->
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Inetpub\wwwroot\XmlEdit\SamplesFinal\HL7\testDerived_Min.xsd" 
  xsi:type="POCD_MT000040.InfrastructureRoot.typeId_TEST_2" newOne="string" root="2.16.840.1.113883.1.3" extension="string">
  <elemA>string</elemA>
</data>

For the record the original error indicates that you have added a new attribute using restriction (not extension) so is invalid.

Final (valid) main schema is now:

<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:include schemaLocation="testDerived_Inc.xsd"/>
	<xs:element name="data" type="POCD_MT000040.InfrastructureRoot.typeId">
		<xs:annotation>
			<xs:documentation>Derivation test</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId">
		<xs:complexContent>
			<xs:restriction base="baseType">
				<xs:sequence>
					<xs:element ref="elemA" minOccurs="0" maxOccurs="3"/>
				</xs:sequence>
				<xs:attribute name="root" type="xs:string" use="required" fixed="2.16.840.1.113883.1.3"/>
				<xs:attribute name="extension" type="xs:string" use="required"/>	
				<xs:attribute name="displayable" use="prohibited"/>			
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="baseType">
		<xs:sequence>
			<xs:element ref="elemA" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="root" type="xs:string"/>
		<xs:attribute name="extension" type="xs:string"/>
		<xs:attribute name="displayable" use="optional"/>
	</xs:complexType>	
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST">
		<xs:complexContent>
			<xs:extension base="POCD_MT000040.InfrastructureRoot.typeId">
				<xs:attribute name="newOne" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>		
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST_P">
		<xs:complexContent>
			<xs:restriction base="POCD_MT000040.InfrastructureRoot.typeId">
				<xs:sequence>
					<xs:element ref="elemA" minOccurs="0"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>	
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST_2">
		<xs:complexContent>
			<xs:restriction base="POCD_MT000040.InfrastructureRoot.typeId_TEST">
				<xs:sequence>
					<xs:element ref="elemA" minOccurs="0" maxOccurs="2"/>
				</xs:sequence>
				<xs:attribute name="newOne" type="xs:string" use="required"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>	
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST_3">
		<xs:complexContent>
			<xs:extension base="POCD_MT000040.InfrastructureRoot.typeId_TEST_2">
				<xs:attribute name="newTwo" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>	
	<xs:complexType name="POCD_MT000040.InfrastructureRoot.typeId_TEST_4">
		<xs:complexContent>
			<xs:restriction base="POCD_MT000040.InfrastructureRoot.typeId_TEST_3">
				<xs:sequence>
					<xs:element ref="elemA" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="newTwo" type="xs:string" use="required"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
</xs:schema>

May 6, 2009

XmlEdit – Business case and Overview

Filed under: Xml Schema — Tags: , , , — walbury @ 12:58 pm

XmlEdit is a web-based application that takes an Xml Schema file(s) and optionally a well-formed (of course!) and schema-valid xml instance and automatically renders a perfectly functional and usable html graphical user interface; that is it automatically creates a web application using the schema as the template and the xml instance as the data.
Given that Xml Schema is the pre-eminent templating mechanism behind xml files, and xml files are already the dominant accepted mechanism for exchanging data between different parties, that there is a niche that can be filled by this type of application seems to me to be self-evident.
The niche that this application is specifically targetted at is those suppliers who wish to engage in internet commerce (ie exchanging data via the net in xml form) that do not have the IT department available to support the extensive development that is a pre-requisite for this activity. Indeed it is quite possible that this solution is competent enough to rival even those that do.
This solution gives any user the advantage of agility. As back-end systems are inevitably tied to both a database and application code any change to a schema by a supplier will often require substantial modifications. By using XmlEdit no modfications would be required; the interface would adjust to the changed schema allowing a companies users to add and edit information uninterrputed.

Point of differentiation

There are other solutions of a similar nature. Principal amongst these is Microsoft Office’s InfoPath. Similar to XmlEdit its primary focus is on data entry. However whilst XmlEdit is code-free InfoPath requires a substantial amount of coding to get a usable form, especially with a schema of any complexity and some it just cannot handle at all. It is designed for relatively simple schemas in mind, not the often quite complicated schemas that seem to be a feature of B2B commerce. However by far the biggest difference between XmlEdit and any other automatic xml form generator on the market is the XmlEdit’s ability to load an instance document in the right places. To the best of my knowledge no other application even attempts this or, if it does it is as part of a customised schema-specific solution that a particular client has developed over the course of some months. XmlEdit gives a user the ability load a document, edit, save changes, send it to another supplier, get the instance back and continue editing.

Below is a screenshot to give you a general idea of how it renders;

XmlEdit_ONIX

Clicking on the Edit Fragment opens up a new browser window showing only the selected ‘arc’.

XmlEdit_ONIX_arc1
XmlEdit_ONIX_arc2
XmlEdit_ONIX_arc3

April 28, 2009

Hello world!

Filed under: Other — walbury @ 2:01 am

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Blog at WordPress.com.