Re: W3C Schema to HTML form.Generic solution available?

Jagdish Arora <[email protected]> Tue, 2 Dec 2003 17:57:10 -0500
Newsgroups gmane.comp.java.sun.xml.general
Message-ID <[email protected]>
Just to add a minor note to that, XMLSPY 30 day trial should help you out
also to get familiar with XSDs.  We also use Tibco XSL generator tool that
we use very often to quickly generate XSL using drop/drag.

Other than that, even though your XML has all different data types, your
HTML form may all have text inputs.  You can augment that by adding
JavaScript so that only numbers can be entered for numeric fields and so.
Once you change the HTML to XML, you can run validation against the XSD to
see if the HTML input was good.  (That way, you dont have to validate the
HTML very thoroughly).  I do realize that at this point you are grappling
with changing the HTML to XML part.

best,
Amrinder


----- Original Message -----
From: "Mark Galbreath" <[email protected]>
To: <[email protected]>
Sent: Tuesday, December 02, 2003 3:21 PM
Subject: Re: W3C Schema to HTML form.Generic solution available?


> Just grab the latest edition of Michael Kay's book - it's the bible of
XSLT.
> I have the 2d edition (Wrox 2001), which is probably the latest.
>
> As for learning XML schema, you better - DTDs are history.
>
> Mark
>
> -----Original Message-----
> From: XML technologies in the Java Platform
> [mailto:[email protected]]On Behalf Of Kwon J. Ekstrom
> Sent: Tuesday, December 02, 2003 3:02 PM
> To: [email protected]
> Subject: Re: W3C Schema to HTML form.Generic solution available?
>
>
> IMHO, XSLT is the best tool, I don't personally know XML Schema yet
> (having not had a driving reason to learn it, although it's on the list).
>
> First off, since you mention some difficulty understanding how XSLT
> works.  From an OO perspective, think of the XML as a tree based data
> source, and your XSLT as your application.
>
> Each template is essentially a function, which can be called by applying
> on a matching node, or by being called directly by name.
>
> You can assume that each template is also an object with the properties
> of the element it is being applied to.
>
> The xsl:param/with-param elements allow passing variables between
> functions.  Note that these can be viewed as "optional" arguments, with
> a default specified by the child nodes, or the xpath contained in a
> select attribute.
>
> XPath essentially acts as a search algorithm for any matching nodes.
> It's really where I'd suggest concentrating XSL research.  Most of the
> power of XSL comes from XPath.
>
> This is a very rough explaination, and not entirely accurate, but should
> serve to help you find some common ground.
>
> Since you don't have previous XSLT experience, I suggest you try to
> write templates based on the direct output.
>
> Take a look at the example schema found at:
>
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/
> xsd_ref_01mb.asp
>
> At the end of this email, I've pasted in the xml on that page, along
> with a template that works with it.
>
> However, you can use either a passed in parameter or the document xpath
> function to load your schema as a second document.  Assuming you wish to
> try it, you can use a technique that I call cross-templating to write a
> generic schema template.
>
> Although I doubt such an effort would be worth the results, as it would
> handle building the forms and validation, but most likely wouldn't do so
> in a user friendly manor (UI is the major concern here).
>
> The purpose here I assume is to increase productivity.  If you'd like
> more information, I'd be happy to post some examples.
>
> -- Kwon J. Ekstrom
>
> amol wrote:
>
> > Thanks Roy.
> > I did go through this series of articles but its too specific to the
> > example xml document in the article.
> > I guess the solution would be to write a XSL which transform the schema
> > into xhtml form.
> > But I am sure someone must have already done this since it looks like a
> > common problem.
> > yups..am basically OO programmer. Just today I went through the
> > XSL tutorial on w3school (http://www.w3schools.com/xsl/) Pretty
> > informative and concise.
> > Still grappling for a solution.....
> >
> >
> >     ----- Original Message -----
> >     *From:* Roy Jacob <mailto:[email protected]>
> >     *To:* [email protected] <mailto:[email protected]>
> >     *Sent:* Tuesday, December 02, 2003 2:58 PM
> >     *Subject:* Re: W3C Schema to HTML form.Generic solution available?
> >
> >     Hi.
> >     Have a look at this and the following articles.
> >     http://www.xml.com/pub/a/2003/04/30/editing.html
> >
> >     It's not the answer you are looking for but it may help you develop
> >     your own solution. I'm in a similar boat to you and have been using
> >     these articles for referance. If your a classical OO programmer like
> >     me the XSL learning curve is V steep!
> >
> >     Roy.
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="purchaseOrder">
>   <table>
>   <tr><td colspan="2">Order Date: <xsl:value-of select="@orderDate"
> /></td></tr>
>   <tr>
>    <td>
>     <xsl:call-template name="USAddress">
>      <xsl:with-param name="addr" select="shipTo" />
>     </xsl:call-template>
>    </td>
>    <td>
>     <xsl:call-template name="USAddress">
>      <xsl:with-param name="addr" select="billTo" />
>     </xsl:call-template>
>    </td>
>   </tr>
>   <tr><td colspan="2"><xsl:value-of select="comment" /></td></tr>
>   <tr><td colspan="2">
>   <xsl:apply-templates select="items" />
>   </td></tr>
>   </table>
> </xsl:template>
>
> <xsl:template match="items">
>   <table width="100%" border="1" cellspacing="1">
>   <tr>
>    <th>Part #</th>
>    <th>Product</th>
>    <th>Quantity</th>
>    <th>Price</th>
>    <th>Ship Date</th>
>    <th>Comment</th>
>   </tr>
>   <xsl:apply-templates select="item">
>    <xsl:sort select="USPrice" order="descending" />
>   </xsl:apply-templates>
>   <tr>
>    <td></td>
>    <td></td>
>    <td><xsl:value-of select="sum(item/quantity)" /></td>
>    <td><xsl:value-of
> select="format-number(sum(item/USPrice),'$#,##0.00')" /></td>
>    <td></td>
>    <td></td>
>   </tr>
>   </table>
> </xsl:template>
>
> <xsl:template match="item">
>   <tr>
>    <td><xsl:value-of select="@partNum" /></td>
>    <td><xsl:value-of select="productName" /></td>
>    <td><xsl:value-of select="quantity" /></td>
>    <td align="right">
>      <xsl:value-of select="format-number(USPrice,'$#,##0.00')" />
>    </td>
>    <td>
>     <xsl:value-of select="shipDate" />
>     <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
>    </td>
>    <td>
>     <xsl:value-of select="comment" />
>     <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
>    </td>
>   </tr>
> </xsl:template>
>
> <xsl:template name="USAddress">
>   <xsl:param name="addr" />
>   <xsl:value-of select="$addr/name" /><br />
>   <xsl:value-of select="$addr/street" /><br />
>   <xsl:value-of select="$addr/city" />,
>   <xsl:text> </xsl:text><xsl:value-of select="$addr/state" />
>   <xsl:text disable-output-escaping="yes">&amp;nbsp;&amp;nbsp;</xsl:text>
>   <xsl:value-of select="$addr/zip" />
> </xsl:template>
>
> </xsl:stylesheet>
>
> --------------------------------------------------------------------------
--
> <?xml version="1.0" encoding="UTF-8" ?>
> <?xml-stylesheet type="text/xsl" href="test1.xslt" ?>
>
> <purchaseOrder orderDate="1999-10-20">
>      <shipTo country="US">
>          <name>Alice Smith</name>
>          <street>123 Maple Street</street>
>          <city>Mill Valley</city>
>          <state>CA</state>
>          <zip>90952</zip>
>      </shipTo>
>      <billTo country="US">
>          <name>Robert Smith</name>
>          <street>8 Oak Avenue</street>
>          <city>Old Town</city>
>          <state>PA</state>
>          <zip>95819</zip>
>      </billTo>
>      <comment>Hurry, my lawn is going wild!</comment>
>      <items>
>          <item partNum="872-AA">
>              <productName>Lawnmower</productName>
>              <quantity>1</quantity>
>              <USPrice>148.95</USPrice>
>              <comment>Confirm this is electric</comment>
>          </item>
>          <item partNum="926-AA">
>              <productName>Baby Monitor</productName>
>              <quantity>1</quantity>
>              <USPrice>39.98</USPrice>
>              <shipDate>1999-05-21</shipDate>
>          </item>
>      </items>
> </purchaseOrder>
>
> -----------------------------------------------------
> xml-interest: A list for discussing XML technologies in the Java Platform.
> To post, mailto:[email protected]
> Archives at: http://archives.java.sun.com/xml-interest.html
> To unsubscribe, mailto:[email protected] the following message;
> signoff xml-interest.
>
> -----------------------------------------------------
> xml-interest: A list for discussing XML technologies in the Java Platform.
> To post, mailto:[email protected]
> Archives at: http://archives.java.sun.com/xml-interest.html
> To unsubscribe, mailto:[email protected] the following message;
> signoff xml-interest.
>

-----------------------------------------------------
xml-interest: A list for discussing XML technologies in the Java Platform.
To post, mailto:[email protected]
Archives at: http://archives.java.sun.com/xml-interest.html
To unsubscribe, mailto:[email protected] the following message;
signoff xml-interest.