|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Unique html name, id, and for form fields
Thanks for your reply.
I understand the unique id part and added an id field to my xml
document used with the select box. Now how can I create unique id's,
for's, and name's that can later be accessed in some organized way by
a server side script. For example I would like to be able to determine
the value of the select box for the row of the Go button that was
clicked.
I've created a more specific example to use, I'm just looking for a
more generic way of doing it. I was thinking this could be done by
just calling a generic repeat template but I am not sure where to
start.
Desired output:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test</title>
</head>
<body>
<form action="transform.aspx" method="post">
<div id="status_table_1">
<h2>Deleted</h2>
<table border="1" cellpadding="4" width="650px">
<tr>
<td width="25%">
<strong>Request Date</strong>
</td>
<td width="15%">
<strong>Change Title</strong>
</td>
<td width="15%">
<strong>Status</strong>
</td>
<td width="45%">
<strong>Action</strong>
</td>
</tr>
</table>
<br>
</div>
<div id="status_table_2">
<h2>Approved</h2>
<table border="1" cellpadding="4" width="650px">
<tr>
<td width="25%">
<strong>Request Date</strong>
</td>
<td width="15%">
<strong>Change Title</strong>
</td>
<td width="15%">
<strong>Status</strong>
</td>
<td width="45%">
<strong>Action</strong>
</td>
</tr>
<tr id="status_table_2:ac_request_1">
<td>2005-03-09 9:12:44</td>
<td>test2</td>
<td>Approved</td>
<td>
<label for="status_table_2:ac_request_1:action">Action:</label>
<select id="status_table_2:ac_request_1:action"
name="ac_request_1:action">
<option value="0">Select an action</option>
<option id="status_table_2:ac_request_1:action_list_1"
value="">View</option>
<option id="status_table_2:ac_request_1:action_list_2"
value="">Delete</option>
<option id="status_table_2:ac_request_1:action_list_3"
value="">Approve</option>
<option id="status_table_2:ac_request_1:action_list_4"
value="">Deny</option>
<option id="status_table_2:ac_request_1:action_list_5"
value="">Add Comments</option>
<option id="status_table_2:ac_request_1:action_list_6"
value="">Add Attachments</option>
</select>
<span id="status_table_2:ac_request_1:test">test:</span>
<input type="submit"
name="status_table_2:ac_request_1:submit" value="Go">
</td>
</tr>
<tr id="status_table_2:ac_request_2">
<td>2005-03-09 9:14:15</td>
<td>test23</td>
<td>Approved</td>
<td>
<label for="status_table_2:ac_request_2:action">Action:</label>
<select id="status_table_2:ac_request_2:action"
name="ac_request_2:action">
<option value="0">Select an action</option>
<option id="status_table_2:ac_request_2:action_list_1"
value="">View</option>
<option id="status_table_2:ac_request_2:action_list_2"
value="">Delete</option>
<option id="status_table_2:ac_request_2:action_list_3"
value="">Approve</option>
<option id="status_table_2:ac_request_2:action_list_4"
value="">Deny</option>
<option id="status_table_2:ac_request_2:action_list_5"
value="">Add Comments</option>
<option id="status_table_2:ac_request_2:action_list_6"
value="">Add Attachments</option>
</select>
<span id="status_table_2:ac_request_2:test">test:</span>
<input type="submit"
name="status_table_2:ac_request_2:submit" value="Go">
</td>
</tr>
</table>
<br>
</div>
<div id="status_table_3">
<h2>Denied</h2>
<table border="1" cellpadding="4" width="650px">
<tr>
<td width="25%">
<strong>Request Date</strong>
</td>
<td width="15%">
<strong>Change Title</strong>
</td>
<td width="15%">
<strong>Status</strong>
</td>
<td width="45%">
<strong>Action</strong>
</td>
</tr>
<tr id="status_table_3:ac_request_1">
<td>2005-03-09 9:14:15</td>
<td>test3</td>
<td>Denied</td>
<td>
<label for="status_table_3:ac_request_1:action">Action:</label>
<select id="status_table_3:ac_request_1:action"
name="ac_request_1:action">
<option value="0">Select an action</option>
<option id="status_table_3:ac_request_1:action_list_1"
value="">View</option>
<option id="status_table_3:ac_request_1:action_list_2"
value="">Delete</option>
<option id="status_table_3:ac_request_1:action_list_3"
value="">Approve</option>
<option id="status_table_3:ac_request_1:action_list_4"
value="">Deny</option>
<option id="status_table_3:ac_request_1:action_list_5"
value="">Add Comments</option>
<option id="status_table_3:ac_request_1:action_list_6"
value="">Add Attachments</option>
</select>
<span id="status_table_3:ac_request_1:test">test:</span>
<input type="submit"
name="status_table_3:ac_request_1:submit" value="Go">
</td>
</tr>
</table>
<br>
</div>
<div id="status_table_4">
<h2>Completed</h2>
<table border="1" cellpadding="4" width="650px">
<tr>
<td width="25%">
<strong>Request Date</strong>
</td>
<td width="15%">
<strong>Change Title</strong>
</td>
<td width="15%">
<strong>Status</strong>
</td>
<td width="45%">
<strong>Action</strong>
</td>
</tr>
<tr id="status_table_4:ac_request_1">
<td>2005-03-09 9:11:56</td>
<td>test</td>
<td>Completed</td>
<td>
<label for="status_table_4:ac_request_1:action">Action:</label>
<select id="status_table_4:ac_request_1:action"
name="ac_request_1:action">
<option value="0">Select an action</option>
<option id="status_table_4:ac_request_1:action_list_1"
value="">View</option>
<option id="status_table_4:ac_request_1:action_list_2"
value="">Delete</option>
<option id="status_table_4:ac_request_1:action_list_3"
value="">Approve</option>
<option id="status_table_4:ac_request_1:action_list_4"
value="">Deny</option>
<option id="status_table_4:ac_request_1:action_list_5"
value="">Add Comments</option>
<option id="status_table_4:ac_request_1:action_list_6"
value="">Add Attachments</option>
</select>
<span id="status_table_4:ac_request_1:test">test:</span>
<input type="submit"
name="status_table_4:ac_request_1:submit" value="Go">
</td>
</tr>
</table>
<br>
</div>
</form>
</body>
</html>
-------- test.xsl --------
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="utf-8"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />
<xsl:variable name="actions" select="document ('actions.xml')" />
<xsl:variable name="statuses" select="document ('status.xml')" />
<xsl:variable name="ac_requests" select="/" />
<xsl:template match="/">
<html>
<head>
<title>Test</title>
</head>
<body>
<form action="transform.aspx" method="post">
<xsl:for-each select="$statuses/statuses/status">
<xsl:variable name="status" select="." />
<xsl:variable name="parent1" select="concat('status_table_',
position())" />
<div id="{$parent1}">
<h2><xsl:value-of select="$status/@status" /></h2>
<table border="1" cellpadding="4" width="650px">
<tr>
<td width="25%"><strong>Request
Date</strong></td>
<td width="15%"><strong>Change
Title</strong></td>
<td width="15%"><strong>Status</strong></td>
<td width="45%"><strong>Action</strong></td>
</tr>
<xsl:for-each
select="$ac_requests/ac_requests/ac_request[@status =
$status/@status]">
<xsl:variable name="acreq" select="." />
<xsl:variable name="parent2"
select="concat('ac_request_', position())" />
<tr id="{$parent1}:{$parent2}">
<td><xsl:value-of
select="@request_date" /></td>
<td><xsl:value-of
select="@change_title" /></td>
<td><xsl:value-of select="@status" /></td>
<td>
<label
for="{$parent1}:{$parent2}:action">Action:</label>
<select
id="{$parent1}:{$parent2}:action" name="{$parent2}:action">
<option value="0">Select an
action</option>
<xsl:for-each
select="$actions/actions/action">
<option
id="{$parent1}:{$parent2}:action_list_{position()}"
value="{$acreq/@ID}">
<xsl:value-of
select="@action" />
</option>
</xsl:for-each>
</select>
<span id="{$parent1}:{$parent2}:test">test:</span>
<input type="submit"
name="{$parent1}:{$parent2}:submit" value="Go" />
</td>
</tr>
</xsl:for-each>
</table>
<br />
</div>
</xsl:for-each>
</form>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
-------- test.xml --------
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<ac_requests>
<ac_request id="1" request_date="2005-03-09 9:11:56"
change_title="test" status="Completed"/>
<ac_request id="2" request_date="2005-03-09 9:12:44"
change_title="test2" status="Approved"/>
<ac_request id="3" request_date="2005-03-09 9:14:15"
change_title="test3" status="Denied"/>
<ac_request id="4" request_date="2005-03-09 9:14:15"
change_title="test23" status="Approved"/>
</ac_requests>
-------- actions.xml --------
<actions>
<action action_id="1" action="View"/>
<action action_id="2" action="Delete"/>
<action action_id="3" action="Approve"/>
<action action_id="4" action="Deny"/>
<action action_id="5" action="Add Comments"/>
<action action_id="6" action="Add Attachments"/>
</actions>
-------- status.xml --------
<statuses>
<status status_id="1" status="Deleted"/>
<status status_id="2" status="Approved"/>
<status status_id="3" status="Denied"/>
<status status_id="4" status="Completed"/>
</statuses>
On 5/10/05, omprakash.v@xxxxxxxxxxxxx <omprakash.v@xxxxxxxxxxxxx> wrote:
>
>
> Hi,
> Please find below the xsl stylesheet that does what you want.
> Since you want 1 select box for each AC_Request in your source xml, there
> has to be a distinguishing factor in your source xml. I could only find
> that the time differed in the RequestDate attribute in the 3 AC_Request
> elements. Therefore I have used the concatenation of the RequestDate and
> the result of the generate-id function as the value of each option.
>
> The only problem I can foresee is due to the ever-changing nature of time,
> the option values too would keep changing resulting in your having to
> change your server side programs each time the source xml changes. I would
> suggest you add another attribute to that is unique across AC_REQUEST and
> is more deterministic.
>
> Hope this helps.
>
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <xsl:stylesheet version="1.0" xmlns:xsl
> ="http://www.w3.org/1999/XSL/Transform">
>
> <xsl:output method="html" indent="yes" encoding="utf-8"
> doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
> doctype-system
> ="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />
>
> <xsl:variable name="priorities" select="document
> ('priority.xml')" />
>
> <xsl:template match="/">
> <html>
> <head>
> <title>Test</title>
> </head>
> <body>
> <form action="transform.aspx" method="post">
> <table border="1" cellpadding="4">
> <tr>
> <td><strong>Request
> Date</strong></td>
> <td><strong>Change
> Title</strong></td>
>
> <td><strong>Status</strong></td>
>
> <td><strong>Action</strong></td>
> </tr>
> <xsl:for-each select
> ="/AC_Requests/AC_Request">
>
> <xsl:variable name="acreq" select
> ="."/>
> <tr>
> <td><xsl:value-of
> select="@RequestDate" /></td>
> <td><xsl:value-of
> select="@ChangeTitle" /></td>
> <td><xsl:value-of
> select="@StatusID" /></td>
> <td>
> <label for
> ="action">Priority: </label>
> <select id
> ="action" name="action">
>
> <option value="0">Select an action</option>
>
> <xsl:for-each select="$priorities/priorities/priority">
>
> <xsl:message><td><xsl:value-of select="concat(normalize-space
> ($acreq/@RequestDate), generate-id(.))" /></td></xsl:message>
>
> <option value="{concat(generate-id(.), normalize-space
> ($acreq/@RequestDate))}"><xsl:value-of
> select="@priority" /></option>
>
> </xsl:for-each>
> </select>
> <input type
> ="submit" name="submit" value="Go" />
> </td>
> </tr>
> </xsl:for-each>
> </table>
> </form>
> </body>
> </html>
>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Cheers,
> Omprakash.V
>
> Jeremy Marzka
> <jmarzka@gmai To:
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> l.com> cc: (bcc: omprakash.v/Polaris)
> Subject: Unique html
name, id, and for form fields
> 05/11/2005
> 02:00 AM
> Please
> respond to
> xsl-list
>
>
> I am working on creating an html report from two xml sources. The
> first source is the xml that needs to be displayed in the report. The
> second source is used to populate a select box. The problem i'm having
> is with the multiple for-each's necessary to do this. In the
> for-each's I need to generate unique id's, name's and for's in a way
> that they can be processed server side later.
>
> Here is what I currently have:
>
> ----test.xsl----
> <?xml version="1.0" encoding="UTF-8" ?>
> <xsl:stylesheet version="1.0" xmlns:xsl="
> http://www.w3.org/1999/XSL/Transform">
>
> <xsl:output method="html" indent="yes" encoding="utf-8"
> doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
> doctype-system="
> http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />
>
> <xsl:variable name="priorities" select="document
> ('priorities.xml')" />
>
> <xsl:template match="/">
> <html>
> <head>
> <title>Test</title>
> </head>
> <body>
> <form action="transform.aspx" method="post">
> <table border="1" cellpadding="4">
> <tr>
> <td><strong>Request
> Date</strong></td>
> <td><strong>Change
> Title</strong></td>
>
> <td><strong>Status</strong></td>
>
> <td><strong>Action</strong></td>
> </tr>
> <xsl:for-each select
> ="/AC_Requests/AC_Request">
> <tr>
> <td><xsl:value-of
> select="@RequestDate" /></td>
> <td><xsl:value-of
> select="@ChangeTitle" /></td>
> <td><xsl:value-of
> select="@StatusID" /></td>
> <td>
> <label for
> ="action">Priority: </label>
> <select id
> ="action" name="action">
>
> <option value="0">Select an action</option>
>
> <xsl:for-each select="$priorities/priorities/priority">
>
> <option value="{@priority_id}"><xsl:value-of
> select="@priority" /></option>
>
> </xsl:for-each>
> </select>
> <input type
> ="submit" name="submit" value="Go" />
> </td>
> </tr>
> </xsl:for-each>
> </table>
> </form>
> </body>
> </html>
>
> </xsl:template>
>
> </xsl:stylesheet>
>
> ---- test.xml ----
> <?xml version="1.0"?>
> <?xml-stylesheet type="text/xsl" href="test.xsl"?>
> <AC_Requests>
> <AC_Request RequestDate="2005-03-09 9:11:56" ChangeTitle="test"
> StatusID="3"/>
> <AC_Request RequestDate="2005-03-09 9:12:44" ChangeTitle="test"
> StatusID="3"/>
> <AC_Request RequestDate="2005-03-09 9:14:15" ChangeTitle="test"
> StatusID="2"/>
> </AC_Requests>
>
> ---- priorities.xml ----
> <?xml version="1.0"?>
> <priorities>
> <priority priority_id="1" priority="Hold"/>
> <priority priority_id="2" priority="High"/>
> <priority priority_id="3" priority="Med"/>
> <priority priority_id="4" priority="Low"/>
> </priorities>
>
> ---- OUTPUT ----
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
> <html>
> <head>
> <META http-equiv="Content-Type" content="text/html; charset=utf-8">
> <title>Test</title>
> </head>
> <body>
> <form action="transform.aspx" method="post">
> <table border="1" cellpadding="4">
>
> <tr>
> <td>
> <strong>Request Date</strong>
> </td>
> <td>
> <strong>Change Title</strong>
> </td>
> <td>
>
> <strong>Status</strong>
> </td>
> <td>
> <strong>Priority</strong>
> </td>
> <td>
> <strong>Action</strong>
>
> </td>
> </tr>
> <tr>
> <td>2005-03-09 9:11:56</td>
> <td>test</td>
> <td>3</td>
> <td>
>
> <select id="action" name="action">
> <option value="0">Select an action</option>
> <option value="1">Hold</option>
> <option value="2">High</option>
> <option value="3">Med</option>
> <option value="4">Low</option>
>
> </select>
> </td>
> <td>
> <input type="submit" name="submit" value="Go">
> </td>
> </tr>
> <tr>
> <td>2005-03-09 9:12:44</td>
>
> <td>test</td>
> <td>3</td>
> <td>
> <select id="action" name="action">
> <option value="0">Select an action</option>
> <option value="1">Hold</option>
> <option value="2">High</option>
>
> <option value="3">Med</option>
> <option value="4">Low</option>
> </select>
> </td>
> <td>
> <input type="submit" name="submit" value="Go">
> </td>
> </tr>
>
> <tr>
> <td>2005-03-09 9:14:15</td>
> <td>test</td>
> <td>2</td>
> <td>
> <select id="action" name="action">
> <option value="0">Select an action</option>
>
> <option value="1">Hold</option>
> <option value="2">High</option>
> <option value="3">Med</option>
> <option value="4">Low</option>
> </select>
> </td>
> <td>
>
> <input type="submit" name="submit" value="Go">
> </td>
> </tr>
> </table>
> </form>
> </body>
> </html>
>
> This e-Mail may contain proprietary and confidential information and is sent
for the intended recipient(s) only.
> If by an addressing or transmission error this mail has been misdirected to
you, you are requested to delete this mail immediately.
> You are also hereby notified that any use, any form of reproduction,
dissemination, copying, disclosure, modification,
> distribution and/or publication of this e-mail message, contents or its
attachment other than by its intended recipient/s is strictly prohibited.
>
> Visit Us at http://www.polaris.co.in
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








