[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Typical sorting and grouping

Subject: Typical sorting and grouping
From: Mike Brown <mike@xxxxxxxx>
Date: Fri, 3 Nov 2000 14:24:26 -0700 (MST)
forms sorting and grouping
taherkordy@xxxxxxxxxxxxxxx wrote on xml-dev:
> [...]
>     Suppose we have the following XML file(book.xml)
> [...]
>        <?xml version="1.0"?>
>        <book>
>                <title> Computer Networks </title>
>                <category_id> 2 </category_id>
>                ...
>        </book>

I'm going to interrupt here because you are apparently modeling many book
titles within a single 'book' element. A better schema would be:

  <?xml version="1.0"?>
  <books>
    <book>
      <title> Computer Networks </title>
      <category_id> 2 </category_id>
    </book>
    ...
  </books>

(i.e., multiple 'book' elements in the 'books' document)   

>     I also have a Parameters table and have extracted values
>     for "category" parameter as follows(parameter.xml):
>     
>        <?xml version="1.0"?>
>        <parameter>
>                <category> 
>                        <category_item id="1">Art</category_item>
>                        <category_item id="2">Computer</category_item>
>                        <category_item id="3">Physics</category_item>
>                        ..
>                </category>
>        </parameter>
>     
>     I want to have the following Html file as the result of
>     merging two XML files and an XSL file(what that I want to help me):
>     
>     <html>
>     <body>
>     Title :          
>        <INPUT TYPE='text' NAME='txtTitle' VALUE="Computer Networks" >
>     Category: 
>        <SELECT NAME="category" SIZE=1> 
>                <OPTION value='1'>Art
>                <OPTION value='2' SELECTED>Computer
>                <OPTION value='3'>Physics
>        </SELECT>
>     </body>
>     </html>
>     
>     I have two quietions :
>        
>  1. I think that when reading from Book and Parameter
>     table, I should make an XML file that have information about
>     books and categrory parameters togother.
> [example XML deleted]
>
>       I want to know that Is it right this idea ?

This is not necessary. You can access multiple source documents by using
the document() function.

>  2. I want to  write an XSL stylesheet for producing this HTML file
>     that automatically selects "computer" option in category Combobox
>     based on value of "category_id" in book.xml and "id"
>     attribute in parameter.xml  

The following stylesheet should illustrate the solution.
I am assuming the following things:
  - primary source tree is coming from books.xml
  - books.xml has each book in its own 'book' element

The complex for-each selection is one way to get the unique categories.  
Another way that is more efficient is to use keys and the Muenchian
method, described in the FAQ.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" version="4.0" indent="yes"/>

  <xsl:template match="/">
    <html>
      <head>
        <title>books</title>
      </head>
      <body>
        <form action="formDataProcessorURI">
          <xsl:apply-templates select="books/book"/>
        </form>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="book">
    <p>
      <xsl:text>Title :</xsl:text>
      <input type="text" name="txtTitle" value="{normalize-space(title)}"/>
      <xsl:text>&#10;Category:</xsl:text>
      <select name="category" size="1">
        <xsl:variable name="category_id" select="normalize-space(category_id)"/>
        <!-- iterate thru unique categories -->
        <xsl:for-each select="document('parameter.xml')/parameter/category/category_item[not(. = preceding-sibling::category_item)]">
          <option value="{position()}">
            <xsl:if test="@id = $category_id">
              <xsl:attribute name="selected">selected</xsl:attribute>
            </xsl:if>
            <xsl:value-of select="."/>
          </option>
        </xsl:for-each>
      </select>
    </p>
  </xsl:template>
</xsl:stylesheet>


   - Mike
____________________________________________________________________
Mike J. Brown, software engineer at         My XML/XSL resources:
webb.net in Denver, Colorado, USA           http://www.skew.org/xml/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.